"),t=V(t),t},genSelectTemplate(s){if(typeof s>"u")return`${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`;const t=this.userData[s];return t?this.renderComponentHtml(t,gt).replace(/[\n\t]/gmi,"").replace(/>\s+<"):[" ","/",":"].every(e=>!s.includes(e))?`@${s}`:`@"${s}"`},renderComponentHtml(s,t){const e=Z(t,{...s}),i=document.createElement("div");i.style.display="none",document.body.appendChild(i),e.mount(i);const n=i.innerHTML;return e.unmount(),i.remove(),n}}},xt={name:"NcAutoCompleteResult",components:{NcUserStatusIcon:z},props:{label:{type:String,required:!1,default:null},subline:{type:String,default:null},id:{type:String,default:null},icon:{type:String,required:!0},iconUrl:{type:String,default:null},source:{type:String,required:!0},status:{type:[Object,Array],default:()=>({})}},setup(){return{isDarkTheme:q()}},computed:{avatarUrl(){return this.iconUrl?this.iconUrl:this.id&&this.source==="users"?B(this.id,{isDarkTheme:this.isDarkTheme}):null}}},At={class:"autocomplete-result"},Mt={key:0,class:"autocomplete-result__status autocomplete-result__status--icon"},It={class:"autocomplete-result__content"},_t=["title"],Lt={key:0,class:"autocomplete-result__subline"};function kt(s,t,e,i,n,r){const o=Y("NcUserStatusIcon");return E(),A("div",At,[T("div",{class:O([[e.icon,`autocomplete-result__icon--${r.avatarUrl?"with-avatar":""}`],"autocomplete-result__icon"]),style:F(r.avatarUrl?{backgroundImage:`url(${r.avatarUrl})`}:null)},[e.status.icon?(E(),A("span",Mt,k(e.status&&e.status.icon||""),1)):e.status.status&&e.status.status!=="offline"?(E(),X(o,{key:1,class:"autocomplete-result__status",status:e.status.status},null,8,["status"])):W("",!0)],6),T("span",It,[T("span",{class:"autocomplete-result__title",title:e.label},k(e.label),9,_t),e.subline?(E(),A("span",Lt,k(e.subline),1)):W("",!0)])])}const $t=H(xt,[["render",kt],["__scopeId","data-v-ca83b679"]]);G(tt,J);const Nt={"material-design-icon":"_material-design-icon_UrExO","tribute-container":"_tribute-container_aTO5r","tribute-container__item":"_tribute-container__item_EHZ07","tribute-container--focus-visible":"_tribute-container--focus-visible_GHsDW","tribute-container-autocomplete":"_tribute-container-autocomplete_YNk1h","tribute-container-emoji":"_tribute-container-emoji_jWgZX","tribute-container-link":"_tribute-container-link_1b7mc","tribute-item":"_tribute-item_p5sRT","tribute-item__title":"_tribute-item__title_VPcy9","tribute-item__icon":"_tribute-item__icon_aTxCU"},Dt=["d","D","p","P","s","S","x","X",")","(","|","/"],$=[];Dt.forEach(s=>{$.push(":"+s),$.push(":-"+s)});let L=null;const Ot={name:"NcRichContenteditable",mixins:[Et],inheritAttrs:!1,props:{id:{type:String,default:()=>D()},label:{type:String,default:""},modelValue:{type:String,required:!0},placeholder:{type:String,default:P("Write a message …")},autoComplete:{type:Function,default:()=>[]},menuContainer:{type:Element,default:()=>document.body},multiline:{type:Boolean,default:!1},contenteditable:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1},maxlength:{type:Number,default:null},emojiAutocomplete:{type:Boolean,default:!0},linkAutocomplete:{type:Boolean,default:!0},class:{type:[String,Array,Object],default:""}},emits:["paste","update:modelValue","smartPickerSubmit","submit"],setup(){const s=new Intl.Segmenter;if(L===null)try{document.createElement("div").contentEditable="plaintext-only",L=!0}catch(t){U.debug("[NcRichContenteditable] Unsupported attribute value:",{error:t}),L=!1}return{labelId:D(),tributeId:D(),segmenter:s,tribute:null,tributeStyleMutationObserver:null}},data(){return{localValue:this.modelValue,isComposing:!1,isAutocompleteOpen:!1,autocompleteActiveId:void 0,isTributeIntegrationDone:!1}},computed:{isEmptyValue(){return!this.localValue||this.localValue.trim()===""},isOverMaxlength(){return this.isEmptyValue||!this.maxlength?!1:[...this.segmenter.segment(this.localValue)].length>this.maxlength},tooltipString(){return this.isOverMaxlength?et("Message limit of %n character reached","Message limit of %n characters reached",this.maxlength):null},contenteditableAttributeValue(){return this.contenteditable&&!this.disabled?L?"plaintext-only":"true":"false"},debouncedAutoComplete(){return j(async(s,t)=>{this.autoComplete(s,t)},100)}},watch:{modelValue(){const s=this.$refs.contenteditable.innerHTML;this.modelValue.trim()!==this.parseContent(s).trim()&&this.updateContent(this.modelValue)}},mounted(){this.initializeTribute(),this.updateContent(this.modelValue),this.$refs.contenteditable.contentEditable=this.contenteditableAttributeValue},beforeUnmount(){this.tribute&&this.tribute.detach(this.$refs.contenteditable),this.tributeStyleMutationObserver&&this.tributeStyleMutationObserver.disconnect()},methods:{focus(){this.$refs.contenteditable.focus()},initializeTribute(){const s=e=>`
`,t=[];t.push({fillAttr:"id",lookup:e=>`${e.id} ${e.label??e.title}`,requireLeadingSpace:!0,menuItemTemplate:e=>s(this.renderComponentHtml(e.original,$t)),noMatchTemplate:()=>'
',selectTemplate:e=>this.genSelectTemplate(e?.original?.id),values:this.debouncedAutoComplete,containerClass:`${this.$style["tribute-container"]} ${this.$style["tribute-container-autocomplete"]}`,itemClass:this.$style["tribute-container__item"]}),this.emojiAutocomplete&&t.push({trigger:":",lookup:(e,i)=>i,requireLeadingSpace:!0,menuItemTemplate:e=>$.includes(e.original)?e.original:s(`
:${e.original.short_name}`),noMatchTemplate:()=>P("No emoji found"),selectTemplate:e=>$.includes(e.original)?e.original:(nt(e.original),e.original.native),values:(e,i)=>{const n=it(e);$.includes(":"+e)&&n.unshift(":"+e),i(n)},containerClass:`${this.$style["tribute-container"]} ${this.$style["tribute-container-emoji"]}`,itemClass:this.$style["tribute-container__item"]}),this.linkAutocomplete&&t.push({trigger:"/",lookup:(e,i)=>i,requireLeadingSpace:!0,menuItemTemplate:e=>s(`
`),noMatchTemplate:()=>P("No link provider found"),selectTemplate:this.getLink,values:(e,i)=>i(st(e)),containerClass:`${this.$style["tribute-container"]} ${this.$style["tribute-container-link"]}`,itemClass:this.$style["tribute-container__item"]}),this.tribute=new S({collection:t,allowSpaces:!1,menuContainer:this.menuContainer}),this.tribute.attach(this.$refs.contenteditable)},getLink(s){return ot(s.original.id).then(t=>{const e=document.getElementById("tmp-smart-picker-result-node"),i={result:t,insertText:!0};if(this.$emit("smartPickerSubmit",i),i.insertText){const n=document.createTextNode(t);e.replaceWith(n),this.setCursorAfter(n),this.updateValue(this.$refs.contenteditable.innerHTML)}else e.remove()}).catch(t=>{U.debug("[NcRichContenteditable] Smart picker promise rejected:",{error:t});const e=document.getElementById("tmp-smart-picker-result-node");this.setCursorAfter(e),e.remove()}),'
'},setCursorAfter(s){const t=document.createRange();t.setEndAfter(s),t.collapse();const e=window.getSelection();e.removeAllRanges(),e.addRange(t)},moveCursorToEnd(){if(!document.createRange||window.getSelection().rangeCount>0&&this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer))return;const s=document.createRange();s.selectNodeContents(this.$refs.contenteditable),s.collapse(!1);const t=window.getSelection();t.removeAllRanges(),t.addRange(s)},onInput(s){this.updateValue(s.target.innerHTML)},onPaste(s){if(!(!this.contenteditable||this.disabled)){if(L)this.$emit("paste",s);else{s.preventDefault();const t=s.clipboardData;if(this.$emit("paste",s),t.files.length!==0||!Object.values(t.items).find(n=>n?.type.startsWith("text")))return;const e=t.getData("text"),i=window.getSelection().getRangeAt(0);i.deleteContents(),i.insertNode(document.createTextNode(e)),i.collapse(!1)}this.updateValue(this.$refs.contenteditable.innerHTML)}},updateValue(s){const t=this.parseContent(s).replace(/^\n$/,"");this.localValue=t,this.$emit("update:modelValue",t)},updateContent(s){const t=this.renderContent(s);this.$refs.contenteditable.innerHTML=t,this.localValue=s},onEnter(s){this.multiline||this.isOverMaxlength||this.tribute.isActive||this.isComposing||(s.preventDefault(),s.stopPropagation(),this.$emit("submit",s))},onCtrlEnter(s){this.isOverMaxlength||this.$emit("submit",s)},onKeyUp(s){s.stopImmediatePropagation()},onKeyEsc(s){this.tribute&&this.isAutocompleteOpen&&(s.stopImmediatePropagation(),this.tribute.hideMenu())},getTributeContainer(){return this.tribute.menu},getTributeSelectedItem(){return this.getTributeContainer().querySelector('.highlight [id^="nc-rich-contenteditable-tribute-item-"]')},onTributeActive(s){this.isAutocompleteOpen=s,s?(this.getTributeContainer().setAttribute("class",this.tribute.current.collection.containerClass||this.$style["tribute-container"]),this.setupTributeIntegration(),document.removeEventListener("click",this.hideTribute,!0)):(this.debouncedAutoComplete.clear(),this.autocompleteActiveId=void 0,this.setTributeFocusVisible(!1))},onTributeArrowKeyDown(){this.isAutocompleteOpen&&(this.setTributeFocusVisible(!0),this.onTributeSelectedItemWillChange())},onTributeSelectedItemWillChange(){requestAnimationFrame(()=>{this.autocompleteActiveId=this.getTributeSelectedItem()?.id})},setupTributeIntegration(){if(this.isTributeIntegrationDone)return;this.isTributeIntegrationDone=!0;const s=this.getTributeContainer();s.id=this.tributeId,s.setAttribute("role","listbox"),s.children[0].setAttribute("role","presentation"),this.tributeStyleMutationObserver=new MutationObserver(([{target:t}])=>{t.style.display!=="none"&&this.onTributeSelectedItemWillChange()}).observe(s,{attributes:!0,attributeFilter:["style"]}),s.addEventListener("mousemove",()=>{this.setTributeFocusVisible(!1),this.onTributeSelectedItemWillChange()},{passive:!0})},setTributeFocusVisible(s){s?this.getTributeContainer().classList.add(this.$style["tribute-container--focus-visible"]):this.getTributeContainer().classList.remove(this.$style["tribute-container--focus-visible"])},showTribute(s){this.focus();const t=this.tribute.collection.findIndex(e=>e.trigger===s);this.tribute.showMenuForCollection(this.$refs.contenteditable,t),this.updateValue(this.$refs.contenteditable.innerHTML),document.addEventListener("click",this.hideTribute,!0)},hideTribute(){this.tribute.hideMenu(),document.removeEventListener("click",this.hideTribute,!0)}}},Rt=["id","contenteditable","aria-labelledby","aria-placeholder","aria-controls","aria-expanded","aria-activedescendant","title"],Pt=["id"];function Wt(s,t,e,i,n,r){return E(),A("div",{class:O(["rich-contenteditable",s.$props.class])},[T("div",Q({id:e.id,ref:"contenteditable",class:[{"rich-contenteditable__input--empty":r.isEmptyValue,"rich-contenteditable__input--multiline":e.multiline,"rich-contenteditable__input--has-label":e.label,"rich-contenteditable__input--overflow":r.isOverMaxlength,"rich-contenteditable__input--disabled":e.disabled},"rich-contenteditable__input"],contenteditable:r.contenteditableAttributeValue,"aria-labelledby":e.label?i.labelId:void 0,"aria-placeholder":e.placeholder,"aria-multiline":"true",role:"textbox","aria-haspopup":"listbox","aria-autocomplete":"inline","aria-controls":i.tributeId,"aria-expanded":n.isAutocompleteOpen?"true":"false","aria-activedescendant":n.autocompleteActiveId,title:r.tooltipString},s.$attrs,{onFocus:t[0]||(t[0]=(...o)=>r.moveCursorToEnd&&r.moveCursorToEnd(...o)),onInput:t[1]||(t[1]=(...o)=>r.onInput&&r.onInput(...o)),onCompositionstart:t[2]||(t[2]=o=>n.isComposing=!0),onCompositionend:t[3]||(t[3]=o=>n.isComposing=!1),onKeydownCapture:t[4]||(t[4]=_((...o)=>r.onKeyEsc&&r.onKeyEsc(...o),["esc"])),onKeydown:[t[5]||(t[5]=_(I((...o)=>r.onEnter&&r.onEnter(...o),["exact"]),["enter"])),t[6]||(t[6]=_(I((...o)=>r.onCtrlEnter&&r.onCtrlEnter(...o),["ctrl","exact","stop","prevent"]),["enter"])),t[9]||(t[9]=_(I((...o)=>r.onTributeArrowKeyDown&&r.onTributeArrowKeyDown(...o),["exact","stop"]),["up"])),t[10]||(t[10]=_(I((...o)=>r.onTributeArrowKeyDown&&r.onTributeArrowKeyDown(...o),["exact","stop"]),["down"]))],onPaste:t[7]||(t[7]=(...o)=>r.onPaste&&r.onPaste(...o)),onKeyupCapture:t[8]||(t[8]=I((...o)=>r.onKeyUp&&r.onKeyUp(...o),["stop","prevent"])),onTributeActiveTrue:t[11]||(t[11]=o=>r.onTributeActive(!0)),onTributeActiveFalse:t[12]||(t[12]=o=>r.onTributeActive(!1))}),null,16,Rt),e.label?(E(),A("div",{key:0,id:i.labelId,class:"rich-contenteditable__label"},k(e.label),9,Pt)):W("",!0)],2)}const Ht={$style:Nt},ae=H(Ot,[["render",Wt],["__cssModules",Ht],["__scopeId","data-v-426785d7"]]);export{$t as NcAutoCompleteResult,gt as NcMentionBubble,ae as default};
-//# sourceMappingURL=index-CWsyX4-P.chunk.mjs.map
+//# sourceMappingURL=index-B5K2wxIr.chunk.mjs.map
diff --git a/dist/index-CWsyX4-P.chunk.mjs.license b/dist/index-B5K2wxIr.chunk.mjs.license
similarity index 100%
rename from dist/index-CWsyX4-P.chunk.mjs.license
rename to dist/index-B5K2wxIr.chunk.mjs.license
diff --git a/dist/index-CWsyX4-P.chunk.mjs.map b/dist/index-B5K2wxIr.chunk.mjs.map
similarity index 99%
rename from dist/index-CWsyX4-P.chunk.mjs.map
rename to dist/index-B5K2wxIr.chunk.mjs.map
index d17fa018621..d94a5c51728 100644
--- a/dist/index-CWsyX4-P.chunk.mjs.map
+++ b/dist/index-B5K2wxIr.chunk.mjs.map
@@ -1 +1 @@
-{"version":3,"file":"index-CWsyX4-P.chunk.mjs","sources":["../node_modules/tributejs/dist/tribute.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcRichContenteditable-BREsny-v.mjs"],"sourcesContent":["if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent$1(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent$1.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the
\";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
\";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '
\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"
\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import '../assets/NcRichContenteditable-Do20Rmk1.css';\nimport debounce from \"debounce\";\nimport Tribute from \"tributejs/dist/tribute.esm.js\";\nimport { useIsDarkTheme } from \"../composables/useIsDarkTheme/index.mjs\";\nimport { g as getAvatarUrl } from \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_45238efd_lang-D6LzDiYf.mjs\";\nimport { N as NcUserStatusIcon } from \"./NcUserStatusIcon-JWiuiAXe.mjs\";\nimport { openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createApp, resolveComponent, createBlock, createCommentVNode, mergeProps, withModifiers, withKeys } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { a as emojiSearch, e as emojiAddRecent } from \"./emoji-V9hqFgPs.mjs\";\nimport { r as register, s as t37, J as t34, a as t, K as n } from \"./_l10n-BklkVPDO.mjs\";\nimport escapeHTML from \"escape-html\";\nimport stripTags from \"striptags\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue-router\";\nimport \"./legacy-DcjXBL_t.mjs\";\nimport \"./NcButton-lQra4n2g.mjs\";\nimport { g as getLinkWithPicker, s as searchProvider } from \"./referencePickerModal-D09ZVhqa.mjs\";\nimport \"./customPickerElements-Cu7bLbap.mjs\";\nimport \"./autolink-U5pBzLgI.mjs\";\nimport \"./NcRichText-D_ssz6sB.mjs\";\nimport \"./NcEmptyContent-CDgWCt_m.mjs\";\nimport \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport \"./NcSelect-B1uITk_3.mjs\";\nimport \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport \"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH.mjs\";\nimport \"dompurify\";\nimport \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport \"./NcInputField-CPL-a_MM.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"focus-trap\";\nimport \"./NcActions-B_QR93qv.mjs\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport \"./NcModal-kyWZ3UFC.mjs\";\nimport \"./rtl-v0UOPAM7.mjs\";\nconst _sfc_main$2 = {\n name: \"NcMentionBubble\",\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * Id of the bubble\n */\n id: {\n type: String,\n required: true\n },\n /**\n * The main text\n */\n label: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Icon to be applied\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * URL of the icon\n */\n iconUrl: {\n type: [String, null],\n default: null\n },\n source: {\n type: String,\n required: true\n },\n /**\n * Is the bubble shown as primary\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n mentionText() {\n return !this.id.includes(\" \") && !this.id.includes(\"/\") ? `@${this.id}` : `@\"${this.id}\"`;\n }\n }\n};\nconst _hoisted_1$2 = { class: \"mention-bubble__wrapper\" };\nconst _hoisted_2$2 = { class: \"mention-bubble__content\" };\nconst _hoisted_3$1 = [\"title\"];\nconst _hoisted_4$1 = {\n role: \"none\",\n class: \"mention-bubble__select\"\n};\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\"mention-bubble\", { \"mention-bubble--primary\": $props.primary }]),\n contenteditable: \"false\"\n }, [\n createElementVNode(\"span\", _hoisted_1$2, [\n createElementVNode(\"span\", _hoisted_2$2, [\n createElementVNode(\"span\", {\n class: normalizeClass([[$props.icon, `mention-bubble__icon--${$options.avatarUrl ? \"with-avatar\" : \"\"}`], \"mention-bubble__icon\"]),\n style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)\n }, null, 6),\n createElementVNode(\"span\", {\n role: \"heading\",\n class: \"mention-bubble__title\",\n title: $props.label\n }, null, 8, _hoisted_3$1)\n ]),\n createElementVNode(\"span\", _hoisted_4$1, toDisplayString($options.mentionText), 1)\n ])\n ], 2);\n}\nconst NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2], [\"__scopeId\", \"data-v-45238efd\"]]);\nconst MENTION_START = /(?=[a-z0-9_\\-@.'])\\B/.source;\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source;\nconst MENTION_GUEST = /@"(?:guest|email){1}\\/[a-f0-9]+"/.source;\nconst MENTION_PREFIXED = /@"(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+"/.source;\nconst MENTION_WITH_SPACE = /@"[a-z0-9_\\-@.' ]+"/.source;\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`;\nconst USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, \"gi\");\nconst USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, \"gi\");\nconst richEditor = {\n props: {\n userData: {\n type: Object,\n default: () => ({})\n }\n },\n methods: {\n /**\n * Convert the value string to html for the inner content\n *\n * @param {string} value the content without html\n * @return {string} rendered html\n */\n renderContent(value) {\n const sanitizedValue = escapeHTML(value);\n const splitValue = sanitizedValue.split(USERID_REGEX).map((part) => part.split(USERID_REGEX_WITH_SPACE)).flat();\n return splitValue.map((part) => {\n if (!part.startsWith(\"@\")) {\n return part;\n }\n const id = part.slice(1).replace(/"/gi, \"\");\n return this.genSelectTemplate(id);\n }).join(\"\").replace(/\\n/gmi, \"
\").replace(/&/gmi, \"&\");\n },\n /**\n * Convert the innerHtml content to a string with mentions as text\n *\n * @param {string} content the content without html\n * @return {string}\n */\n parseContent(content) {\n let text = content;\n text = text.replace(/
/gmi, \"\\n\");\n text = text.replace(/ /gmi, \" \");\n text = text.replace(/&/gmi, \"&\");\n text = text.replace(/<\\/div>/gmi, \"\\n\");\n text = stripTags(text, \"
\");\n text = stripTags(text);\n return text;\n },\n /**\n * Generate an autocompletion popup entry template\n *\n * @param {string} value the value to match against the userData\n * @return {string}\n */\n genSelectTemplate(value) {\n if (typeof value === \"undefined\") {\n return `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`;\n }\n const data = this.userData[value];\n if (!data) {\n return [\" \", \"/\", \":\"].every((char) => !value.includes(char)) ? `@${value}` : `@\"${value}\"`;\n }\n return this.renderComponentHtml(data, NcMentionBubble).replace(/[\\n\\t]/gmi, \"\").replace(/>\\s+<\");\n },\n /**\n * Render a component and return its html content\n *\n * @param {object} props the props to pass to the component\n * @param {object} component the component to render\n * @return {string} the rendered html\n */\n renderComponentHtml(props, component) {\n const Item = createApp(component, {\n ...props\n });\n const mount = document.createElement(\"div\");\n mount.style.display = \"none\";\n document.body.appendChild(mount);\n Item.mount(mount);\n const renderedHtml = mount.innerHTML;\n Item.unmount();\n mount.remove();\n return renderedHtml;\n }\n }\n};\nconst _sfc_main$1 = {\n name: \"NcAutoCompleteResult\",\n components: {\n NcUserStatusIcon\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The label text\n */\n label: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The secondary line of text if any\n */\n subline: {\n type: String,\n default: null\n },\n /**\n * Unique id\n */\n id: {\n type: String,\n default: null\n },\n /**\n * The icon class\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * Icon as external URL\n */\n iconUrl: {\n type: String,\n default: null\n },\n source: {\n type: String,\n required: true\n },\n status: {\n type: [Object, Array],\n default: () => ({})\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n }\n }\n};\nconst _hoisted_1$1 = { class: \"autocomplete-result\" };\nconst _hoisted_2$1 = {\n key: 0,\n class: \"autocomplete-result__status autocomplete-result__status--icon\"\n};\nconst _hoisted_3 = { class: \"autocomplete-result__content\" };\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n key: 0,\n class: \"autocomplete-result__subline\"\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcUserStatusIcon = resolveComponent(\"NcUserStatusIcon\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createElementVNode(\"div\", {\n class: normalizeClass([[$props.icon, `autocomplete-result__icon--${$options.avatarUrl ? \"with-avatar\" : \"\"}`], \"autocomplete-result__icon\"]),\n style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)\n }, [\n $props.status.icon ? (openBlock(), createElementBlock(\"span\", _hoisted_2$1, toDisplayString($props.status && $props.status.icon || \"\"), 1)) : $props.status.status && $props.status.status !== \"offline\" ? (openBlock(), createBlock(_component_NcUserStatusIcon, {\n key: 1,\n class: \"autocomplete-result__status\",\n status: $props.status.status\n }, null, 8, [\"status\"])) : createCommentVNode(\"\", true)\n ], 6),\n createElementVNode(\"span\", _hoisted_3, [\n createElementVNode(\"span\", {\n class: \"autocomplete-result__title\",\n title: $props.label\n }, toDisplayString($props.label), 9, _hoisted_4),\n $props.subline ? (openBlock(), createElementBlock(\"span\", _hoisted_5, toDisplayString($props.subline), 1)) : createCommentVNode(\"\", true)\n ])\n ]);\n}\nconst NcAutoCompleteResult = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-ca83b679\"]]);\nregister(t34, t37);\nconst style1 = {\n \"material-design-icon\": \"_material-design-icon_UrExO\",\n \"tribute-container\": \"_tribute-container_aTO5r\",\n \"tribute-container__item\": \"_tribute-container__item_EHZ07\",\n \"tribute-container--focus-visible\": \"_tribute-container--focus-visible_GHsDW\",\n \"tribute-container-autocomplete\": \"_tribute-container-autocomplete_YNk1h\",\n \"tribute-container-emoji\": \"_tribute-container-emoji_jWgZX\",\n \"tribute-container-link\": \"_tribute-container-link_1b7mc\",\n \"tribute-item\": \"_tribute-item_p5sRT\",\n \"tribute-item__title\": \"_tribute-item__title_VPcy9\",\n \"tribute-item__icon\": \"_tribute-item__icon_aTxCU\"\n};\nconst smilesCharacters = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\nconst textSmiles = [];\nsmilesCharacters.forEach((char) => {\n textSmiles.push(\":\" + char);\n textSmiles.push(\":-\" + char);\n});\nlet isPlaintextOnlySupported = null;\nconst _sfc_main = {\n name: \"NcRichContenteditable\",\n mixins: [richEditor],\n inheritAttrs: false,\n props: {\n /**\n * The ID attribute of the content editable\n */\n id: {\n type: String,\n default: () => createElementId()\n },\n /**\n * Visual label of the contenteditable\n */\n label: {\n type: String,\n default: \"\"\n },\n /**\n * The text content\n */\n modelValue: {\n type: String,\n required: true\n },\n /**\n * Placeholder to be shown if empty\n */\n placeholder: {\n type: String,\n default: t(\"Write a message …\")\n },\n /**\n * Auto complete function\n */\n autoComplete: {\n type: Function,\n default: () => []\n },\n /**\n * The containing element for the menu popover\n */\n menuContainer: {\n type: Element,\n default: () => document.body\n },\n /**\n * Make the contenteditable looks like a textarea or not.\n * Default looks like a single-line input.\n * This also handle the default enter/shift+enter behaviour.\n * if multiline, enter = newline; otherwise enter = submit\n * shift+enter always add a new line. ctrl+enter always submits\n */\n multiline: {\n type: Boolean,\n default: false\n },\n /**\n * Is the content editable ?\n */\n contenteditable: {\n type: Boolean,\n default: true\n },\n /**\n * Disable the editing and show specific disabled design\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Max allowed length\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Enable or disable emoji autocompletion\n */\n emojiAutocomplete: {\n type: Boolean,\n default: true\n },\n /**\n * Enable or disable link autocompletion\n */\n linkAutocomplete: {\n type: Boolean,\n default: true\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"paste\",\n \"update:modelValue\",\n \"smartPickerSubmit\",\n \"submit\"\n ],\n setup() {\n const segmenter = new Intl.Segmenter();\n if (isPlaintextOnlySupported === null) {\n try {\n document.createElement(\"div\").contentEditable = \"plaintext-only\";\n isPlaintextOnlySupported = true;\n } catch (error) {\n logger.debug(\"[NcRichContenteditable] Unsupported attribute value:\", { error });\n isPlaintextOnlySupported = false;\n }\n }\n return {\n // Constants\n labelId: createElementId(),\n tributeId: createElementId(),\n segmenter,\n /**\n * Non-reactive property to store Tribute instance\n *\n * @type {import('tributejs').default | null}\n */\n tribute: null,\n tributeStyleMutationObserver: null\n };\n },\n data() {\n return {\n // Represent the raw untrimmed text of the contenteditable\n // serves no other purpose than to check whether the\n // content is empty or not\n localValue: this.modelValue,\n // Is in text composition session in IME\n isComposing: false,\n // Tribute autocomplete\n isAutocompleteOpen: false,\n autocompleteActiveId: void 0,\n isTributeIntegrationDone: false\n };\n },\n computed: {\n /**\n * Is the current trimmed value empty?\n *\n * @return {boolean}\n */\n isEmptyValue() {\n return !this.localValue || this.localValue.trim() === \"\";\n },\n /**\n * Is the current value over maxlength?\n *\n * @return {boolean}\n */\n isOverMaxlength() {\n if (this.isEmptyValue || !this.maxlength) {\n return false;\n }\n const length = [...this.segmenter.segment(this.localValue)].length;\n return length > this.maxlength;\n },\n /**\n * Tooltip to show if characters count is over limit\n *\n * @return {string}\n */\n tooltipString() {\n if (!this.isOverMaxlength) {\n return null;\n }\n return n(\"Message limit of %n character reached\", \"Message limit of %n characters reached\", this.maxlength);\n },\n /**\n * Edit is only allowed when contenteditable is:\n * 'true' (all browsers since 2015)\n * 'plaintext-only' (most browsers since 2015, Firefox since 136+)\n *\n * @return {string}\n */\n contenteditableAttributeValue() {\n if (this.contenteditable && !this.disabled) {\n return isPlaintextOnlySupported ? \"plaintext-only\" : \"true\";\n }\n return \"false\";\n },\n /**\n * Compute debounce function for the autocomplete function\n */\n debouncedAutoComplete() {\n return debounce(async (search, callback) => {\n this.autoComplete(search, callback);\n }, 100);\n }\n },\n watch: {\n /**\n * If the parent value change, we compare the plain text rendering\n * If it's different, we render everything and update the main content\n */\n modelValue() {\n const html = this.$refs.contenteditable.innerHTML;\n if (this.modelValue.trim() !== this.parseContent(html).trim()) {\n this.updateContent(this.modelValue);\n }\n }\n },\n mounted() {\n this.initializeTribute();\n this.updateContent(this.modelValue);\n this.$refs.contenteditable.contentEditable = this.contenteditableAttributeValue;\n },\n beforeUnmount() {\n if (this.tribute) {\n this.tribute.detach(this.$refs.contenteditable);\n }\n if (this.tributeStyleMutationObserver) {\n this.tributeStyleMutationObserver.disconnect();\n }\n },\n methods: {\n /**\n * Focus the richContenteditable\n *\n * @public\n */\n focus() {\n this.$refs.contenteditable.focus();\n },\n initializeTribute() {\n const renderMenuItem = (content) => `
${content}
`;\n const tributesCollection = [];\n tributesCollection.push({\n fillAttr: \"id\",\n // Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n lookup: (result) => `${result.id} ${result.label ?? result.title}`,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n // Hide if no results\n noMatchTemplate: () => '
',\n // Inner display of mentions\n selectTemplate: (item) => this.genSelectTemplate(item?.original?.id),\n // Autocompletion results\n values: this.debouncedAutoComplete,\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-autocomplete\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n if (this.emojiAutocomplete) {\n tributesCollection.push({\n trigger: \":\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n return renderMenuItem(`
${item.original.native} :${item.original.short_name}`);\n },\n // Hide if no results\n noMatchTemplate: () => t(\"No emoji found\"),\n // Display raw emoji along with its name\n selectTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n emojiAddRecent(item.original);\n return item.original.native;\n },\n // Pass the search results as values\n values: (text, cb) => {\n const emojiResults = emojiSearch(text);\n if (textSmiles.includes(\":\" + text)) {\n emojiResults.unshift(\":\" + text);\n }\n cb(emojiResults);\n },\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-emoji\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n if (this.linkAutocomplete) {\n tributesCollection.push({\n trigger: \"/\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(`
${item.original.title}`),\n // Hide if no results\n noMatchTemplate: () => t(\"No link provider found\"),\n selectTemplate: this.getLink,\n // Pass the search results as values\n values: (text, cb) => cb(searchProvider(text)),\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-link\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n this.tribute = new Tribute({\n collection: tributesCollection,\n // FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n // Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n allowSpaces: false,\n // Where to inject the menu popup\n menuContainer: this.menuContainer\n });\n this.tribute.attach(this.$refs.contenteditable);\n },\n getLink(item) {\n getLinkWithPicker(item.original.id).then((result) => {\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n const eventData = {\n result,\n insertText: true\n };\n this.$emit(\"smartPickerSubmit\", eventData);\n if (eventData.insertText) {\n const newElem = document.createTextNode(result);\n tmpElem.replaceWith(newElem);\n this.setCursorAfter(newElem);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n } else {\n tmpElem.remove();\n }\n }).catch((error) => {\n logger.debug(\"[NcRichContenteditable] Smart picker promise rejected:\", { error });\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n this.setCursorAfter(tmpElem);\n tmpElem.remove();\n });\n return '
';\n },\n setCursorAfter(element) {\n const range = document.createRange();\n range.setEndAfter(element);\n range.collapse();\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n moveCursorToEnd() {\n if (!document.createRange) {\n return;\n }\n if (window.getSelection().rangeCount > 0 && this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer)) {\n return;\n }\n const range = document.createRange();\n range.selectNodeContents(this.$refs.contenteditable);\n range.collapse(false);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n /**\n * Re-emit the input event to the parent\n *\n * @param {Event} event the input event\n */\n onInput(event) {\n this.updateValue(event.target.innerHTML);\n },\n /**\n * When pasting, sanitize the content, extract text\n * and render it again\n *\n * @param {Event} event the paste event\n * @fires Event paste the original paste event\n */\n onPaste(event) {\n if (!this.contenteditable || this.disabled) {\n return;\n }\n if (isPlaintextOnlySupported) {\n this.$emit(\"paste\", event);\n } else {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n this.$emit(\"paste\", event);\n if (clipboardData.files.length !== 0 || !Object.values(clipboardData.items).find((item) => item?.type.startsWith(\"text\"))) {\n return;\n }\n const text = clipboardData.getData(\"text\");\n const selection = window.getSelection();\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n }\n this.updateValue(this.$refs.contenteditable.innerHTML);\n },\n /**\n * Update the value text from the provided html\n *\n * @param {string} htmlOrText the html content (or raw text with @mentions)\n */\n updateValue(htmlOrText) {\n const text = this.parseContent(htmlOrText).replace(/^\\n$/, \"\");\n this.localValue = text;\n this.$emit(\"update:modelValue\", text);\n },\n /**\n * Update content and local value\n *\n * @param {string} value the message value\n */\n updateContent(value) {\n const renderedContent = this.renderContent(value);\n this.$refs.contenteditable.innerHTML = renderedContent;\n this.localValue = value;\n },\n /**\n * Enter key pressed. Submits if not multiline\n *\n * @param {Event} event the keydown event\n */\n onEnter(event) {\n if (this.multiline || this.isOverMaxlength || this.tribute.isActive || this.isComposing) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.$emit(\"submit\", event);\n },\n /**\n * Ctrl + Enter key pressed is used to submit\n *\n * @param {Event} event the keydown event\n */\n onCtrlEnter(event) {\n if (this.isOverMaxlength) {\n return;\n }\n this.$emit(\"submit\", event);\n },\n onKeyUp(event) {\n event.stopImmediatePropagation();\n },\n onKeyEsc(event) {\n if (this.tribute && this.isAutocompleteOpen) {\n event.stopImmediatePropagation();\n this.tribute.hideMenu();\n }\n },\n /**\n * Get HTML element with Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeContainer() {\n return this.tribute.menu;\n },\n /**\n * Get the currently selected item element id in Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeSelectedItem() {\n return this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]');\n },\n /**\n * Handle Tribute activation\n *\n * @param {boolean} isActive - is active\n */\n onTributeActive(isActive) {\n this.isAutocompleteOpen = isActive;\n if (isActive) {\n this.getTributeContainer().setAttribute(\"class\", this.tribute.current.collection.containerClass || this.$style[\"tribute-container\"]);\n this.setupTributeIntegration();\n document.removeEventListener(\"click\", this.hideTribute, true);\n } else {\n this.debouncedAutoComplete.clear();\n this.autocompleteActiveId = void 0;\n this.setTributeFocusVisible(false);\n }\n },\n onTributeArrowKeyDown() {\n if (!this.isAutocompleteOpen) {\n return;\n }\n this.setTributeFocusVisible(true);\n this.onTributeSelectedItemWillChange();\n },\n onTributeSelectedItemWillChange() {\n requestAnimationFrame(() => {\n this.autocompleteActiveId = this.getTributeSelectedItem()?.id;\n });\n },\n setupTributeIntegration() {\n if (this.isTributeIntegrationDone) {\n return;\n }\n this.isTributeIntegrationDone = true;\n const tributeContainer = this.getTributeContainer();\n tributeContainer.id = this.tributeId;\n tributeContainer.setAttribute(\"role\", \"listbox\");\n const ul = tributeContainer.children[0];\n ul.setAttribute(\"role\", \"presentation\");\n this.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n if (target.style.display !== \"none\") {\n this.onTributeSelectedItemWillChange();\n }\n }).observe(tributeContainer, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n tributeContainer.addEventListener(\"mousemove\", () => {\n this.setTributeFocusVisible(false);\n this.onTributeSelectedItemWillChange();\n }, { passive: true });\n },\n /**\n * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n *\n * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n * to style selected options in the autocomplete listbox.\n *\n * @param {boolean} withFocusVisible - should the focus-visible class be added\n */\n setTributeFocusVisible(withFocusVisible) {\n if (withFocusVisible) {\n this.getTributeContainer().classList.add(this.$style[\"tribute-container--focus-visible\"]);\n } else {\n this.getTributeContainer().classList.remove(this.$style[\"tribute-container--focus-visible\"]);\n }\n },\n /**\n * Show tribute menu programmatically.\n *\n * @param {string} trigger - trigger character, can be '/', '@', or ':'\n *\n * @public\n */\n showTribute(trigger) {\n this.focus();\n const index = this.tribute.collection.findIndex((collection) => collection.trigger === trigger);\n this.tribute.showMenuForCollection(this.$refs.contenteditable, index);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n document.addEventListener(\"click\", this.hideTribute, true);\n },\n /**\n * Hide tribute menu programmatically\n *\n */\n hideTribute() {\n this.tribute.hideMenu();\n document.removeEventListener(\"click\", this.hideTribute, true);\n }\n }\n};\nconst _hoisted_1 = [\"id\", \"contenteditable\", \"aria-labelledby\", \"aria-placeholder\", \"aria-controls\", \"aria-expanded\", \"aria-activedescendant\", \"title\"];\nconst _hoisted_2 = [\"id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"rich-contenteditable\", _ctx.$props.class])\n }, [\n createElementVNode(\"div\", mergeProps({\n id: $props.id,\n ref: \"contenteditable\",\n class: [{\n \"rich-contenteditable__input--empty\": $options.isEmptyValue,\n \"rich-contenteditable__input--multiline\": $props.multiline,\n \"rich-contenteditable__input--has-label\": $props.label,\n \"rich-contenteditable__input--overflow\": $options.isOverMaxlength,\n \"rich-contenteditable__input--disabled\": $props.disabled\n }, \"rich-contenteditable__input\"],\n contenteditable: $options.contenteditableAttributeValue,\n \"aria-labelledby\": $props.label ? $setup.labelId : void 0,\n \"aria-placeholder\": $props.placeholder,\n \"aria-multiline\": \"true\",\n role: \"textbox\",\n \"aria-haspopup\": \"listbox\",\n \"aria-autocomplete\": \"inline\",\n \"aria-controls\": $setup.tributeId,\n \"aria-expanded\": $data.isAutocompleteOpen ? \"true\" : \"false\",\n \"aria-activedescendant\": $data.autocompleteActiveId,\n title: $options.tooltipString\n }, _ctx.$attrs, {\n onFocus: _cache[0] || (_cache[0] = (...args) => $options.moveCursorToEnd && $options.moveCursorToEnd(...args)),\n onInput: _cache[1] || (_cache[1] = (...args) => $options.onInput && $options.onInput(...args)),\n onCompositionstart: _cache[2] || (_cache[2] = ($event) => $data.isComposing = true),\n onCompositionend: _cache[3] || (_cache[3] = ($event) => $data.isComposing = false),\n onKeydownCapture: _cache[4] || (_cache[4] = withKeys((...args) => $options.onKeyEsc && $options.onKeyEsc(...args), [\"esc\"])),\n onKeydown: [\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.onEnter && $options.onEnter(...args), [\"exact\"]), [\"enter\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.onCtrlEnter && $options.onCtrlEnter(...args), [\"ctrl\", \"exact\", \"stop\", \"prevent\"]), [\"enter\"])),\n _cache[9] || (_cache[9] = withKeys(withModifiers((...args) => $options.onTributeArrowKeyDown && $options.onTributeArrowKeyDown(...args), [\"exact\", \"stop\"]), [\"up\"])),\n _cache[10] || (_cache[10] = withKeys(withModifiers((...args) => $options.onTributeArrowKeyDown && $options.onTributeArrowKeyDown(...args), [\"exact\", \"stop\"]), [\"down\"]))\n ],\n onPaste: _cache[7] || (_cache[7] = (...args) => $options.onPaste && $options.onPaste(...args)),\n onKeyupCapture: _cache[8] || (_cache[8] = withModifiers((...args) => $options.onKeyUp && $options.onKeyUp(...args), [\"stop\", \"prevent\"])),\n onTributeActiveTrue: _cache[11] || (_cache[11] = ($event) => $options.onTributeActive(true)),\n onTributeActiveFalse: _cache[12] || (_cache[12] = ($event) => $options.onTributeActive(false))\n }), null, 16, _hoisted_1),\n $props.label ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: $setup.labelId,\n class: \"rich-contenteditable__label\"\n }, toDisplayString($props.label), 9, _hoisted_2)) : createCommentVNode(\"\", true)\n ], 2);\n}\nconst cssModules = {\n \"$style\": style1\n};\nconst NcRichContenteditable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__cssModules\", cssModules], [\"__scopeId\", \"data-v-426785d7\"]]);\nexport {\n NcAutoCompleteResult as N,\n NcMentionBubble as a,\n NcRichContenteditable as b\n};\n//# sourceMappingURL=NcRichContenteditable-BREsny-v.mjs.map\n"],"names":["predicate","list","length","thisArg","value","i","CustomEvent$1","event","params","evt","TributeEvents","tribute","element","instance","o","li","keyCode","trigger","eventKeyPressed","el","info","e","collectionItem","item","count","selected","index","lis","liClientRect","menuClientRect","scrollDistance","elem","includeMargin","height","style","TributeMenuEvents","menu","func","wait","immediate","timeout","context","args","later","callNow","TributeRange","iframe","scrollTo","coordinates","menuDimensions","menuIsOffScreen","menuIsOffScreenHorizontally","menuIsOffScreenVertically","targetElement","path","offset","range","sel","text","requireLeadingSpace","hasTrailingSpace","originalEvent","replaceEvent","textSuffix","endPos","myField","startPos","html","frag","node","lastNode","ctx","ce","selectedElem","workingNodeContent","selectStartOffset","textComponent","wordsArray","worldsCount","menuAlreadyActive","allowSpaces","isAutocomplete","selectionInfo","effectiveRange","lastWordOfEffectiveRange","mostRecentTriggerCharPos","triggerChar","config","c","idx","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","str","reversedStr","cidx","len","firstChar","match","triggerIdx","windowWidth","windowHeight","doc","windowLeft","windowTop","menuTop","menuRight","menuBottom","menuLeft","dimensions","position","flipped","properties","isFirefox","div","computed","prop","span","rect","top","left","parentHeight","parentRect","scrollStillAvailable","selectedNodePosition","reasonableBuffer","clientRect","maxScrollDisplacement","elemTop","elemBottom","maxY","targetY","TributeSearch","pattern","array","string","opts","pre","post","compareString","patternCache","stringIndex","patternIndex","best","temp","score","indices","rendered","arr","prev","a","b","Tribute","values","selectClass","containerClass","itemClass","autocompleteMode","selectTemplate","menuItemTemplate","lookup","fillAttr","collection","menuContainer","noMatchTemplate","replaceTextSuffix","positionMenu","spaceSelectsMatch","searchOpts","menuItemLimit","menuShowMinLength","t","val","noMatchEvent","matchItem","wrapper","ul","processValues","items","fragment","collectionIndex","textRange","textNode","textarea","scrollPos","caretPos","front","back","content","newValues","replace","_sfc_main$2","useIsDarkTheme","getAvatarUrl","_hoisted_1$2","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","_sfc_render$2","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","normalizeClass","createElementVNode","normalizeStyle","toDisplayString","NcMentionBubble","_export_sfc","MENTION_START","MENTION_SIMPLE","MENTION_GUEST","MENTION_PREFIXED","MENTION_WITH_SPACE","MENTION_COMPLEX","USERID_REGEX","USERID_REGEX_WITH_SPACE","richEditor","escapeHTML","part","id","stripTags","data","char","props","component","Item","createApp","mount","renderedHtml","_sfc_main$1","NcUserStatusIcon","_hoisted_1$1","_hoisted_2$1","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render$1","_component_NcUserStatusIcon","resolveComponent","createBlock","createCommentVNode","NcAutoCompleteResult","register","t34","t37","style1","smilesCharacters","textSmiles","isPlaintextOnlySupported","_sfc_main","createElementId","segmenter","error","logger","n","debounce","search","callback","renderMenuItem","tributesCollection","result","query","emojiAddRecent","cb","emojiResults","emojiSearch","searchProvider","getLinkWithPicker","tmpElem","eventData","newElem","selection","clipboardData","htmlOrText","renderedContent","isActive","tributeContainer","target","withFocusVisible","_hoisted_1","_hoisted_2","_sfc_render","mergeProps","$event","withKeys","withModifiers","cssModules","NcRichContenteditable"],"mappings":"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","x_google_ignoreList":[0,1]}
\ No newline at end of file
+{"version":3,"file":"index-B5K2wxIr.chunk.mjs","sources":["../node_modules/tributejs/dist/tribute.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcRichContenteditable-BREsny-v.mjs"],"sourcesContent":["if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent$1(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent$1.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the
container for the click\");\n }\n }\n tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n tribute.hideMenu();\n\n // TODO: should fire with externalTrigger and target is outside of menu\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(() => tribute.hideMenu());\n }\n }\n\n keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n instance.updateSelection(this);\n\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, \"\");\n } else {\n let keyCode = instance.getKeyCode(instance, this, event);\n\n if (isNaN(keyCode) || !keyCode) return;\n\n let trigger = instance.tribute.triggers().find(trigger => {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== \"undefined\") {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if (\n instance.tribute.current.mentionText.length <\n instance.tribute.current.collection.menuShowMinLength\n ) {\n return;\n }\n\n if (\n ((instance.tribute.current.trigger ||\n instance.tribute.autocompleteMode) &&\n instance.commandEvent === false) ||\n (instance.tribute.isActive && event.keyCode === 8)\n ) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n\n shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n let eventKeyPressed = false;\n TributeEvents.keys().forEach(o => {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n\n return !eventKeyPressed;\n }\n\n return false;\n }\n\n getKeyCode(instance, el, event) {\n let tribute = instance.tribute;\n let info = tribute.range.getTriggerInfo(\n false,\n tribute.hasTrailingSpace,\n true,\n tribute.allowSpaces,\n tribute.autocompleteMode\n );\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n\n updateSelection(el) {\n this.tribute.current.element = el;\n let info = this.tribute.range.getTriggerInfo(\n false,\n this.tribute.hasTrailingSpace,\n true,\n this.tribute.allowSpaces,\n this.tribute.autocompleteMode\n );\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n\n callbacks() {\n return {\n triggerChar: (e, el, trigger) => {\n let tribute = this.tribute;\n tribute.current.trigger = trigger;\n\n let collectionItem = tribute.collection.find(item => {\n return item.trigger === trigger;\n });\n\n tribute.current.collection = collectionItem;\n\n if (\n tribute.current.mentionText.length >=\n tribute.current.collection.menuShowMinLength &&\n tribute.inputEvent\n ) {\n tribute.showMenuFor(el, true);\n }\n },\n enter: (e, el) => {\n // choose selection\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: (e, el) => {\n if (this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n this.tribute.isActive = false;\n this.tribute.hideMenu();\n }\n },\n tab: (e, el) => {\n // choose first match\n this.callbacks().enter(e, el);\n },\n space: (e, el) => {\n if (this.tribute.isActive) {\n if (this.tribute.spaceSelectsMatch) {\n this.callbacks().enter(e, el);\n } else if (!this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.hideMenu();\n this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: (e, el) => {\n // navigate up ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length,\n selected = this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n this.tribute.menuSelected--;\n this.setActiveLi();\n } else if (selected === 0) {\n this.tribute.menuSelected = count - 1;\n this.setActiveLi();\n this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n }\n }\n },\n down: (e, el) => {\n // navigate down ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length - 1,\n selected = this.tribute.menuSelected;\n\n if (count > selected) {\n this.tribute.menuSelected++;\n this.setActiveLi();\n } else if (count === selected) {\n this.tribute.menuSelected = 0;\n this.setActiveLi();\n this.tribute.menu.scrollTop = 0;\n }\n }\n },\n delete: (e, el) => {\n if (\n this.tribute.isActive &&\n this.tribute.current.mentionText.length < 1\n ) {\n this.tribute.hideMenu();\n } else if (this.tribute.isActive) {\n this.tribute.showMenuFor(el);\n }\n }\n };\n }\n\n setActiveLi(index) {\n let lis = this.tribute.menu.querySelectorAll(\"li\"),\n length = lis.length >>> 0;\n\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (let i = 0; i < length; i++) {\n let li = lis[i];\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n\n let liClientRect = li.getBoundingClientRect();\n let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n let scrollDistance = menuClientRect.top - liClientRect.top;\n this.tribute.menu.scrollTop -= scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n\n getFullHeight(elem, includeMargin) {\n let height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n let style = elem.currentStyle || window.getComputedStyle(elem);\n return (\n height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n );\n }\n\n return height;\n }\n}\n\nclass TributeMenuEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n bind(menu) {\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.showMenuFor(this.tribute.current.element, false);\n }\n },\n 300,\n false\n );\n this.windowResizeEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.range.positionMenuAtCaret(true);\n }\n },\n 300,\n false\n );\n\n // fixes IE11 issues with mousedown\n this.tribute.range\n .getDocument()\n .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .addEventListener(\"mousedown\", this.menuClickEvent, false);\n window.addEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n unbind(menu) {\n this.tribute.range\n .getDocument()\n .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n debounce(func, wait, immediate) {\n var timeout;\n return () => {\n var context = this,\n args = arguments;\n var later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n getDocument() {\n let iframe;\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document\n }\n\n return iframe.contentWindow.document\n }\n\n positionMenuAtCaret(scrollTo) {\n let context = this.tribute.current,\n coordinates;\n\n let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n\n if(!this.tribute.positionMenu){\n this.tribute.menu.style.cssText = `display: block;`;\n return\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n info.mentionPosition);\n }\n else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n left: ${coordinates.left}px;\n right: ${coordinates.right}px;\n bottom: ${coordinates.bottom}px;\n position: absolute;\n display: block;`;\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n\n window.setTimeout(() => {\n let menuDimensions = {\n width: this.tribute.menu.offsetWidth,\n height: this.tribute.menu.offsetHeight\n };\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n this.tribute.menu.style.cssText = 'display: none';\n this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n\n get menuContainerIsBody() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n\n\n selectElement(targetElement, path, offset) {\n let range;\n let elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n if (elem === undefined) {\n return\n }\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n\n replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n let context = this.tribute.current;\n let replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent,\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n let myField = this.tribute.current.element;\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : ' ';\n text += textSuffix;\n let startPos = info.mentionPosition;\n let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length - 1;\n }\n myField.value = myField.value.substring(0, startPos) + text +\n myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : '\\xA0';\n text += textSuffix;\n let endPos = info.mentionPosition + info.mentionText.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length;\n }\n this.pasteHtml(text, info.mentionPosition, endPos);\n }\n\n context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n context.element.dispatchEvent(replaceEvent);\n }\n }\n\n pasteHtml(html, startPos, endPos) {\n let range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n\n let el = this.getDocument().createElement('div');\n el.innerHTML = html;\n let frag = this.getDocument().createDocumentFragment(),\n node, lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n\n getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection()\n }\n\n return window.getSelection()\n }\n\n getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n let node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i\n }\n }\n }\n\n getContentEditableSelectedPath(ctx) {\n let sel = this.getWindowSelection();\n let selected = sel.anchorNode;\n let path = [];\n let offset;\n\n if (selected != null) {\n let i;\n let ce = selected.contentEditable;\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n path.reverse();\n\n // getRangeAt may not exist, need alternative\n offset = sel.getRangeAt(0).startOffset;\n\n return {\n selected: selected,\n path: path,\n offset: offset\n }\n }\n }\n\n getTextPrecedingCurrentSelection() {\n let context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n let textComponent = this.tribute.current.element;\n if (textComponent) {\n let startPos = textComponent.selectionStart;\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n\n } else {\n let selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n let workingNodeContent = selectedElem.textContent;\n let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text\n }\n\n getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n let wordsArray = text.split(/\\s+/);\n let worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim()\n }\n\n getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n let ctx = this.tribute.current;\n let selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n let effectiveRange = this.getTextPrecedingCurrentSelection();\n let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n }\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n let mostRecentTriggerCharPos = -1;\n let triggerChar;\n\n this.tribute.collection.forEach(config => {\n let c = config.trigger;\n let idx = config.requireLeadingSpace ?\n this.lastIndexWithLeadingSpace(effectiveRange, c) :\n effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 &&\n (\n mostRecentTriggerCharPos === 0 ||\n !requireLeadingSpace ||\n /[\\xA0\\s]/g.test(\n effectiveRange.substring(\n mostRecentTriggerCharPos - 1,\n mostRecentTriggerCharPos)\n )\n )\n ) {\n let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n effectiveRange.length);\n\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n let leadingSpace = currentTriggerSnippet.length > 0 &&\n (\n firstSnippetChar === ' ' ||\n firstSnippetChar === '\\xA0'\n );\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n }\n }\n }\n }\n }\n\n lastIndexWithLeadingSpace (str, trigger) {\n let reversedStr = str.split('').reverse().join('');\n let index = -1;\n\n for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n let firstChar = cidx === str.length - 1;\n let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n let match = true;\n for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n match = false;\n break\n }\n }\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break\n }\n }\n\n return index\n }\n\n isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n }\n\n isMenuOffScreen(coordinates, menuDimensions) {\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n }\n }\n\n getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n let dimensions = {\n width: null,\n height: null\n };\n\n this.tribute.menu.style.cssText = `top: 0px;\n left: 0px;\n position: fixed;\n display: block;\n visibility; hidden;`;\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n\n this.tribute.menu.style.cssText = `display: none;`;\n\n return dimensions\n }\n\n getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n 'overflowY', 'borderTopWidth', 'borderRightWidth',\n 'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n 'textAlign', 'textTransform', 'textIndent',\n 'textDecoration', 'letterSpacing', 'wordSpacing'\n ];\n\n let isFirefox = (window.mozInnerScreenX !== null);\n\n let div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n\n let style = div.style;\n let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n style.whiteSpace = 'pre-wrap';\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n }\n\n // position off-screen\n style.position = 'absolute';\n style.visibility = 'hidden';\n\n // transfer the element's properties to the div\n properties.forEach(prop => {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = `${(parseInt(computed.width) - 2)}px`;\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n let span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n\n let rect = element.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let top = 0;\n let left = 0;\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n let coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates\n }\n\n getContentEditableCaretPosition(selectedNodePosition) {\n let range;\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n\n range.collapse(false);\n\n let rect = range.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let left = rect.left;\n let top = rect.top;\n\n let coordinates = {\n left: left + windowLeft,\n top: top + rect.height + windowTop\n };\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n if (!this.menuContainerIsBody) {\n coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n }\n\n return coordinates\n }\n\n scrollIntoView(elem) {\n let reasonableBuffer = 20,\n clientRect;\n let maxScrollDisplacement = 100;\n let e = this.menu;\n\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n if (e === undefined || !e.getBoundingClientRect) {\n return\n }\n }\n }\n\n let elemTop = clientRect.top;\n let elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n simpleFilter(pattern, array) {\n return array.filter(string => {\n return this.test(pattern, string)\n })\n }\n\n test(pattern, string) {\n return this.match(pattern, string) !== null\n }\n\n match(pattern, string, opts) {\n opts = opts || {};\n let len = string.length,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase();\n\n if (opts.skip) {\n return {rendered: string, score: 0}\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n if (!patternCache) {\n return null\n }\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n }\n }\n\n traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n }\n }\n\n // if string at end or remaining pattern > remaining string\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined\n }\n\n let c = pattern[patternIndex];\n let index = string.indexOf(c, stringIndex);\n let best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop();\n\n // if downstream traversal failed, return best answer so far\n if (!temp) {\n return best\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best\n }\n\n calculateScore(patternCache) {\n let score = 0;\n let temp = 1;\n\n patternCache.forEach((index, i) => {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n }\n else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n\n return score\n }\n\n render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n\n indices.forEach((index, i) => {\n rendered += pre + string[index] + post +\n string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n });\n\n return rendered\n }\n\n filter(pattern, arr, opts) {\n opts = opts || {};\n return arr\n .reduce((prev, element, idx, arr) => {\n let str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) { // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n let rendered = this.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev\n }, [])\n\n .sort((a, b) => {\n let compare = b.score - a.score;\n if (compare) return compare\n return a.index - b.index\n })\n }\n}\n\nclass Tribute {\n constructor({\n values = null,\n iframe = null,\n selectClass = \"highlight\",\n containerClass = \"tribute-container\",\n itemClass = \"\",\n trigger = \"@\",\n autocompleteMode = false,\n selectTemplate = null,\n menuItemTemplate = null,\n lookup = \"key\",\n fillAttr = \"value\",\n collection = null,\n menuContainer = null,\n noMatchTemplate = null,\n requireLeadingSpace = true,\n allowSpaces = false,\n replaceTextSuffix = null,\n positionMenu = true,\n spaceSelectsMatch = false,\n searchOpts = {},\n menuItemLimit = null,\n menuShowMinLength = 0\n }) {\n this.autocompleteMode = autocompleteMode;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = \"\";\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [\n {\n // symbol that starts the lookup\n trigger: trigger,\n\n // is it wrapped in an iframe\n iframe: iframe,\n\n // class applied to selected item\n selectClass: selectClass,\n\n // class applied to the Container\n containerClass: containerClass,\n\n // class applied to each item\n itemClass: itemClass,\n\n // function called on select that retuns the content to insert\n selectTemplate: (\n selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n\n // function called that returns content for an item\n menuItemTemplate: (\n menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"No Match Found!\";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
No Match Found!\";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '
' +\n (this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]) +\n \"\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"
\",\n post: this.current.collection.searchOpts.post || \"\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import '../assets/NcRichContenteditable-Do20Rmk1.css';\nimport debounce from \"debounce\";\nimport Tribute from \"tributejs/dist/tribute.esm.js\";\nimport { useIsDarkTheme } from \"../composables/useIsDarkTheme/index.mjs\";\nimport { g as getAvatarUrl } from \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_45238efd_lang-D6LzDiYf.mjs\";\nimport { N as NcUserStatusIcon } from \"./NcUserStatusIcon-JWiuiAXe.mjs\";\nimport { openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createApp, resolveComponent, createBlock, createCommentVNode, mergeProps, withModifiers, withKeys } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { a as emojiSearch, e as emojiAddRecent } from \"./emoji-V9hqFgPs.mjs\";\nimport { r as register, s as t37, J as t34, a as t, K as n } from \"./_l10n-BklkVPDO.mjs\";\nimport escapeHTML from \"escape-html\";\nimport stripTags from \"striptags\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue-router\";\nimport \"./legacy-DcjXBL_t.mjs\";\nimport \"./NcButton-lQra4n2g.mjs\";\nimport { g as getLinkWithPicker, s as searchProvider } from \"./referencePickerModal-D09ZVhqa.mjs\";\nimport \"./customPickerElements-Cu7bLbap.mjs\";\nimport \"./autolink-U5pBzLgI.mjs\";\nimport \"./NcRichText-D_ssz6sB.mjs\";\nimport \"./NcEmptyContent-CDgWCt_m.mjs\";\nimport \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport \"./NcSelect-B1uITk_3.mjs\";\nimport \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport \"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH.mjs\";\nimport \"dompurify\";\nimport \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport \"./NcInputField-CPL-a_MM.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"focus-trap\";\nimport \"./NcActions-B_QR93qv.mjs\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport \"./NcModal-kyWZ3UFC.mjs\";\nimport \"./rtl-v0UOPAM7.mjs\";\nconst _sfc_main$2 = {\n name: \"NcMentionBubble\",\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * Id of the bubble\n */\n id: {\n type: String,\n required: true\n },\n /**\n * The main text\n */\n label: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Icon to be applied\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * URL of the icon\n */\n iconUrl: {\n type: [String, null],\n default: null\n },\n source: {\n type: String,\n required: true\n },\n /**\n * Is the bubble shown as primary\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n mentionText() {\n return !this.id.includes(\" \") && !this.id.includes(\"/\") ? `@${this.id}` : `@\"${this.id}\"`;\n }\n }\n};\nconst _hoisted_1$2 = { class: \"mention-bubble__wrapper\" };\nconst _hoisted_2$2 = { class: \"mention-bubble__content\" };\nconst _hoisted_3$1 = [\"title\"];\nconst _hoisted_4$1 = {\n role: \"none\",\n class: \"mention-bubble__select\"\n};\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\"mention-bubble\", { \"mention-bubble--primary\": $props.primary }]),\n contenteditable: \"false\"\n }, [\n createElementVNode(\"span\", _hoisted_1$2, [\n createElementVNode(\"span\", _hoisted_2$2, [\n createElementVNode(\"span\", {\n class: normalizeClass([[$props.icon, `mention-bubble__icon--${$options.avatarUrl ? \"with-avatar\" : \"\"}`], \"mention-bubble__icon\"]),\n style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)\n }, null, 6),\n createElementVNode(\"span\", {\n role: \"heading\",\n class: \"mention-bubble__title\",\n title: $props.label\n }, null, 8, _hoisted_3$1)\n ]),\n createElementVNode(\"span\", _hoisted_4$1, toDisplayString($options.mentionText), 1)\n ])\n ], 2);\n}\nconst NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2], [\"__scopeId\", \"data-v-45238efd\"]]);\nconst MENTION_START = /(?=[a-z0-9_\\-@.'])\\B/.source;\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source;\nconst MENTION_GUEST = /@"(?:guest|email){1}\\/[a-f0-9]+"/.source;\nconst MENTION_PREFIXED = /@"(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+"/.source;\nconst MENTION_WITH_SPACE = /@"[a-z0-9_\\-@.' ]+"/.source;\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`;\nconst USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, \"gi\");\nconst USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, \"gi\");\nconst richEditor = {\n props: {\n userData: {\n type: Object,\n default: () => ({})\n }\n },\n methods: {\n /**\n * Convert the value string to html for the inner content\n *\n * @param {string} value the content without html\n * @return {string} rendered html\n */\n renderContent(value) {\n const sanitizedValue = escapeHTML(value);\n const splitValue = sanitizedValue.split(USERID_REGEX).map((part) => part.split(USERID_REGEX_WITH_SPACE)).flat();\n return splitValue.map((part) => {\n if (!part.startsWith(\"@\")) {\n return part;\n }\n const id = part.slice(1).replace(/"/gi, \"\");\n return this.genSelectTemplate(id);\n }).join(\"\").replace(/\\n/gmi, \"
\").replace(/&/gmi, \"&\");\n },\n /**\n * Convert the innerHtml content to a string with mentions as text\n *\n * @param {string} content the content without html\n * @return {string}\n */\n parseContent(content) {\n let text = content;\n text = text.replace(/
/gmi, \"\\n\");\n text = text.replace(/ /gmi, \" \");\n text = text.replace(/&/gmi, \"&\");\n text = text.replace(/<\\/div>/gmi, \"\\n\");\n text = stripTags(text, \"
\");\n text = stripTags(text);\n return text;\n },\n /**\n * Generate an autocompletion popup entry template\n *\n * @param {string} value the value to match against the userData\n * @return {string}\n */\n genSelectTemplate(value) {\n if (typeof value === \"undefined\") {\n return `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`;\n }\n const data = this.userData[value];\n if (!data) {\n return [\" \", \"/\", \":\"].every((char) => !value.includes(char)) ? `@${value}` : `@\"${value}\"`;\n }\n return this.renderComponentHtml(data, NcMentionBubble).replace(/[\\n\\t]/gmi, \"\").replace(/>\\s+<\");\n },\n /**\n * Render a component and return its html content\n *\n * @param {object} props the props to pass to the component\n * @param {object} component the component to render\n * @return {string} the rendered html\n */\n renderComponentHtml(props, component) {\n const Item = createApp(component, {\n ...props\n });\n const mount = document.createElement(\"div\");\n mount.style.display = \"none\";\n document.body.appendChild(mount);\n Item.mount(mount);\n const renderedHtml = mount.innerHTML;\n Item.unmount();\n mount.remove();\n return renderedHtml;\n }\n }\n};\nconst _sfc_main$1 = {\n name: \"NcAutoCompleteResult\",\n components: {\n NcUserStatusIcon\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The label text\n */\n label: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The secondary line of text if any\n */\n subline: {\n type: String,\n default: null\n },\n /**\n * Unique id\n */\n id: {\n type: String,\n default: null\n },\n /**\n * The icon class\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * Icon as external URL\n */\n iconUrl: {\n type: String,\n default: null\n },\n source: {\n type: String,\n required: true\n },\n status: {\n type: [Object, Array],\n default: () => ({})\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n }\n }\n};\nconst _hoisted_1$1 = { class: \"autocomplete-result\" };\nconst _hoisted_2$1 = {\n key: 0,\n class: \"autocomplete-result__status autocomplete-result__status--icon\"\n};\nconst _hoisted_3 = { class: \"autocomplete-result__content\" };\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n key: 0,\n class: \"autocomplete-result__subline\"\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcUserStatusIcon = resolveComponent(\"NcUserStatusIcon\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createElementVNode(\"div\", {\n class: normalizeClass([[$props.icon, `autocomplete-result__icon--${$options.avatarUrl ? \"with-avatar\" : \"\"}`], \"autocomplete-result__icon\"]),\n style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)\n }, [\n $props.status.icon ? (openBlock(), createElementBlock(\"span\", _hoisted_2$1, toDisplayString($props.status && $props.status.icon || \"\"), 1)) : $props.status.status && $props.status.status !== \"offline\" ? (openBlock(), createBlock(_component_NcUserStatusIcon, {\n key: 1,\n class: \"autocomplete-result__status\",\n status: $props.status.status\n }, null, 8, [\"status\"])) : createCommentVNode(\"\", true)\n ], 6),\n createElementVNode(\"span\", _hoisted_3, [\n createElementVNode(\"span\", {\n class: \"autocomplete-result__title\",\n title: $props.label\n }, toDisplayString($props.label), 9, _hoisted_4),\n $props.subline ? (openBlock(), createElementBlock(\"span\", _hoisted_5, toDisplayString($props.subline), 1)) : createCommentVNode(\"\", true)\n ])\n ]);\n}\nconst NcAutoCompleteResult = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-ca83b679\"]]);\nregister(t34, t37);\nconst style1 = {\n \"material-design-icon\": \"_material-design-icon_UrExO\",\n \"tribute-container\": \"_tribute-container_aTO5r\",\n \"tribute-container__item\": \"_tribute-container__item_EHZ07\",\n \"tribute-container--focus-visible\": \"_tribute-container--focus-visible_GHsDW\",\n \"tribute-container-autocomplete\": \"_tribute-container-autocomplete_YNk1h\",\n \"tribute-container-emoji\": \"_tribute-container-emoji_jWgZX\",\n \"tribute-container-link\": \"_tribute-container-link_1b7mc\",\n \"tribute-item\": \"_tribute-item_p5sRT\",\n \"tribute-item__title\": \"_tribute-item__title_VPcy9\",\n \"tribute-item__icon\": \"_tribute-item__icon_aTxCU\"\n};\nconst smilesCharacters = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\nconst textSmiles = [];\nsmilesCharacters.forEach((char) => {\n textSmiles.push(\":\" + char);\n textSmiles.push(\":-\" + char);\n});\nlet isPlaintextOnlySupported = null;\nconst _sfc_main = {\n name: \"NcRichContenteditable\",\n mixins: [richEditor],\n inheritAttrs: false,\n props: {\n /**\n * The ID attribute of the content editable\n */\n id: {\n type: String,\n default: () => createElementId()\n },\n /**\n * Visual label of the contenteditable\n */\n label: {\n type: String,\n default: \"\"\n },\n /**\n * The text content\n */\n modelValue: {\n type: String,\n required: true\n },\n /**\n * Placeholder to be shown if empty\n */\n placeholder: {\n type: String,\n default: t(\"Write a message …\")\n },\n /**\n * Auto complete function\n */\n autoComplete: {\n type: Function,\n default: () => []\n },\n /**\n * The containing element for the menu popover\n */\n menuContainer: {\n type: Element,\n default: () => document.body\n },\n /**\n * Make the contenteditable looks like a textarea or not.\n * Default looks like a single-line input.\n * This also handle the default enter/shift+enter behaviour.\n * if multiline, enter = newline; otherwise enter = submit\n * shift+enter always add a new line. ctrl+enter always submits\n */\n multiline: {\n type: Boolean,\n default: false\n },\n /**\n * Is the content editable ?\n */\n contenteditable: {\n type: Boolean,\n default: true\n },\n /**\n * Disable the editing and show specific disabled design\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Max allowed length\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Enable or disable emoji autocompletion\n */\n emojiAutocomplete: {\n type: Boolean,\n default: true\n },\n /**\n * Enable or disable link autocompletion\n */\n linkAutocomplete: {\n type: Boolean,\n default: true\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"paste\",\n \"update:modelValue\",\n \"smartPickerSubmit\",\n \"submit\"\n ],\n setup() {\n const segmenter = new Intl.Segmenter();\n if (isPlaintextOnlySupported === null) {\n try {\n document.createElement(\"div\").contentEditable = \"plaintext-only\";\n isPlaintextOnlySupported = true;\n } catch (error) {\n logger.debug(\"[NcRichContenteditable] Unsupported attribute value:\", { error });\n isPlaintextOnlySupported = false;\n }\n }\n return {\n // Constants\n labelId: createElementId(),\n tributeId: createElementId(),\n segmenter,\n /**\n * Non-reactive property to store Tribute instance\n *\n * @type {import('tributejs').default | null}\n */\n tribute: null,\n tributeStyleMutationObserver: null\n };\n },\n data() {\n return {\n // Represent the raw untrimmed text of the contenteditable\n // serves no other purpose than to check whether the\n // content is empty or not\n localValue: this.modelValue,\n // Is in text composition session in IME\n isComposing: false,\n // Tribute autocomplete\n isAutocompleteOpen: false,\n autocompleteActiveId: void 0,\n isTributeIntegrationDone: false\n };\n },\n computed: {\n /**\n * Is the current trimmed value empty?\n *\n * @return {boolean}\n */\n isEmptyValue() {\n return !this.localValue || this.localValue.trim() === \"\";\n },\n /**\n * Is the current value over maxlength?\n *\n * @return {boolean}\n */\n isOverMaxlength() {\n if (this.isEmptyValue || !this.maxlength) {\n return false;\n }\n const length = [...this.segmenter.segment(this.localValue)].length;\n return length > this.maxlength;\n },\n /**\n * Tooltip to show if characters count is over limit\n *\n * @return {string}\n */\n tooltipString() {\n if (!this.isOverMaxlength) {\n return null;\n }\n return n(\"Message limit of %n character reached\", \"Message limit of %n characters reached\", this.maxlength);\n },\n /**\n * Edit is only allowed when contenteditable is:\n * 'true' (all browsers since 2015)\n * 'plaintext-only' (most browsers since 2015, Firefox since 136+)\n *\n * @return {string}\n */\n contenteditableAttributeValue() {\n if (this.contenteditable && !this.disabled) {\n return isPlaintextOnlySupported ? \"plaintext-only\" : \"true\";\n }\n return \"false\";\n },\n /**\n * Compute debounce function for the autocomplete function\n */\n debouncedAutoComplete() {\n return debounce(async (search, callback) => {\n this.autoComplete(search, callback);\n }, 100);\n }\n },\n watch: {\n /**\n * If the parent value change, we compare the plain text rendering\n * If it's different, we render everything and update the main content\n */\n modelValue() {\n const html = this.$refs.contenteditable.innerHTML;\n if (this.modelValue.trim() !== this.parseContent(html).trim()) {\n this.updateContent(this.modelValue);\n }\n }\n },\n mounted() {\n this.initializeTribute();\n this.updateContent(this.modelValue);\n this.$refs.contenteditable.contentEditable = this.contenteditableAttributeValue;\n },\n beforeUnmount() {\n if (this.tribute) {\n this.tribute.detach(this.$refs.contenteditable);\n }\n if (this.tributeStyleMutationObserver) {\n this.tributeStyleMutationObserver.disconnect();\n }\n },\n methods: {\n /**\n * Focus the richContenteditable\n *\n * @public\n */\n focus() {\n this.$refs.contenteditable.focus();\n },\n initializeTribute() {\n const renderMenuItem = (content) => `
${content}
`;\n const tributesCollection = [];\n tributesCollection.push({\n fillAttr: \"id\",\n // Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n lookup: (result) => `${result.id} ${result.label ?? result.title}`,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n // Hide if no results\n noMatchTemplate: () => '
',\n // Inner display of mentions\n selectTemplate: (item) => this.genSelectTemplate(item?.original?.id),\n // Autocompletion results\n values: this.debouncedAutoComplete,\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-autocomplete\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n if (this.emojiAutocomplete) {\n tributesCollection.push({\n trigger: \":\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n return renderMenuItem(`
${item.original.native} :${item.original.short_name}`);\n },\n // Hide if no results\n noMatchTemplate: () => t(\"No emoji found\"),\n // Display raw emoji along with its name\n selectTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n emojiAddRecent(item.original);\n return item.original.native;\n },\n // Pass the search results as values\n values: (text, cb) => {\n const emojiResults = emojiSearch(text);\n if (textSmiles.includes(\":\" + text)) {\n emojiResults.unshift(\":\" + text);\n }\n cb(emojiResults);\n },\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-emoji\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n if (this.linkAutocomplete) {\n tributesCollection.push({\n trigger: \"/\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(`
${item.original.title}`),\n // Hide if no results\n noMatchTemplate: () => t(\"No link provider found\"),\n selectTemplate: this.getLink,\n // Pass the search results as values\n values: (text, cb) => cb(searchProvider(text)),\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-link\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n this.tribute = new Tribute({\n collection: tributesCollection,\n // FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n // Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n allowSpaces: false,\n // Where to inject the menu popup\n menuContainer: this.menuContainer\n });\n this.tribute.attach(this.$refs.contenteditable);\n },\n getLink(item) {\n getLinkWithPicker(item.original.id).then((result) => {\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n const eventData = {\n result,\n insertText: true\n };\n this.$emit(\"smartPickerSubmit\", eventData);\n if (eventData.insertText) {\n const newElem = document.createTextNode(result);\n tmpElem.replaceWith(newElem);\n this.setCursorAfter(newElem);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n } else {\n tmpElem.remove();\n }\n }).catch((error) => {\n logger.debug(\"[NcRichContenteditable] Smart picker promise rejected:\", { error });\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n this.setCursorAfter(tmpElem);\n tmpElem.remove();\n });\n return '
';\n },\n setCursorAfter(element) {\n const range = document.createRange();\n range.setEndAfter(element);\n range.collapse();\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n moveCursorToEnd() {\n if (!document.createRange) {\n return;\n }\n if (window.getSelection().rangeCount > 0 && this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer)) {\n return;\n }\n const range = document.createRange();\n range.selectNodeContents(this.$refs.contenteditable);\n range.collapse(false);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n /**\n * Re-emit the input event to the parent\n *\n * @param {Event} event the input event\n */\n onInput(event) {\n this.updateValue(event.target.innerHTML);\n },\n /**\n * When pasting, sanitize the content, extract text\n * and render it again\n *\n * @param {Event} event the paste event\n * @fires Event paste the original paste event\n */\n onPaste(event) {\n if (!this.contenteditable || this.disabled) {\n return;\n }\n if (isPlaintextOnlySupported) {\n this.$emit(\"paste\", event);\n } else {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n this.$emit(\"paste\", event);\n if (clipboardData.files.length !== 0 || !Object.values(clipboardData.items).find((item) => item?.type.startsWith(\"text\"))) {\n return;\n }\n const text = clipboardData.getData(\"text\");\n const selection = window.getSelection();\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n }\n this.updateValue(this.$refs.contenteditable.innerHTML);\n },\n /**\n * Update the value text from the provided html\n *\n * @param {string} htmlOrText the html content (or raw text with @mentions)\n */\n updateValue(htmlOrText) {\n const text = this.parseContent(htmlOrText).replace(/^\\n$/, \"\");\n this.localValue = text;\n this.$emit(\"update:modelValue\", text);\n },\n /**\n * Update content and local value\n *\n * @param {string} value the message value\n */\n updateContent(value) {\n const renderedContent = this.renderContent(value);\n this.$refs.contenteditable.innerHTML = renderedContent;\n this.localValue = value;\n },\n /**\n * Enter key pressed. Submits if not multiline\n *\n * @param {Event} event the keydown event\n */\n onEnter(event) {\n if (this.multiline || this.isOverMaxlength || this.tribute.isActive || this.isComposing) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.$emit(\"submit\", event);\n },\n /**\n * Ctrl + Enter key pressed is used to submit\n *\n * @param {Event} event the keydown event\n */\n onCtrlEnter(event) {\n if (this.isOverMaxlength) {\n return;\n }\n this.$emit(\"submit\", event);\n },\n onKeyUp(event) {\n event.stopImmediatePropagation();\n },\n onKeyEsc(event) {\n if (this.tribute && this.isAutocompleteOpen) {\n event.stopImmediatePropagation();\n this.tribute.hideMenu();\n }\n },\n /**\n * Get HTML element with Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeContainer() {\n return this.tribute.menu;\n },\n /**\n * Get the currently selected item element id in Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeSelectedItem() {\n return this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]');\n },\n /**\n * Handle Tribute activation\n *\n * @param {boolean} isActive - is active\n */\n onTributeActive(isActive) {\n this.isAutocompleteOpen = isActive;\n if (isActive) {\n this.getTributeContainer().setAttribute(\"class\", this.tribute.current.collection.containerClass || this.$style[\"tribute-container\"]);\n this.setupTributeIntegration();\n document.removeEventListener(\"click\", this.hideTribute, true);\n } else {\n this.debouncedAutoComplete.clear();\n this.autocompleteActiveId = void 0;\n this.setTributeFocusVisible(false);\n }\n },\n onTributeArrowKeyDown() {\n if (!this.isAutocompleteOpen) {\n return;\n }\n this.setTributeFocusVisible(true);\n this.onTributeSelectedItemWillChange();\n },\n onTributeSelectedItemWillChange() {\n requestAnimationFrame(() => {\n this.autocompleteActiveId = this.getTributeSelectedItem()?.id;\n });\n },\n setupTributeIntegration() {\n if (this.isTributeIntegrationDone) {\n return;\n }\n this.isTributeIntegrationDone = true;\n const tributeContainer = this.getTributeContainer();\n tributeContainer.id = this.tributeId;\n tributeContainer.setAttribute(\"role\", \"listbox\");\n const ul = tributeContainer.children[0];\n ul.setAttribute(\"role\", \"presentation\");\n this.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n if (target.style.display !== \"none\") {\n this.onTributeSelectedItemWillChange();\n }\n }).observe(tributeContainer, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n tributeContainer.addEventListener(\"mousemove\", () => {\n this.setTributeFocusVisible(false);\n this.onTributeSelectedItemWillChange();\n }, { passive: true });\n },\n /**\n * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n *\n * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n * to style selected options in the autocomplete listbox.\n *\n * @param {boolean} withFocusVisible - should the focus-visible class be added\n */\n setTributeFocusVisible(withFocusVisible) {\n if (withFocusVisible) {\n this.getTributeContainer().classList.add(this.$style[\"tribute-container--focus-visible\"]);\n } else {\n this.getTributeContainer().classList.remove(this.$style[\"tribute-container--focus-visible\"]);\n }\n },\n /**\n * Show tribute menu programmatically.\n *\n * @param {string} trigger - trigger character, can be '/', '@', or ':'\n *\n * @public\n */\n showTribute(trigger) {\n this.focus();\n const index = this.tribute.collection.findIndex((collection) => collection.trigger === trigger);\n this.tribute.showMenuForCollection(this.$refs.contenteditable, index);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n document.addEventListener(\"click\", this.hideTribute, true);\n },\n /**\n * Hide tribute menu programmatically\n *\n */\n hideTribute() {\n this.tribute.hideMenu();\n document.removeEventListener(\"click\", this.hideTribute, true);\n }\n }\n};\nconst _hoisted_1 = [\"id\", \"contenteditable\", \"aria-labelledby\", \"aria-placeholder\", \"aria-controls\", \"aria-expanded\", \"aria-activedescendant\", \"title\"];\nconst _hoisted_2 = [\"id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"rich-contenteditable\", _ctx.$props.class])\n }, [\n createElementVNode(\"div\", mergeProps({\n id: $props.id,\n ref: \"contenteditable\",\n class: [{\n \"rich-contenteditable__input--empty\": $options.isEmptyValue,\n \"rich-contenteditable__input--multiline\": $props.multiline,\n \"rich-contenteditable__input--has-label\": $props.label,\n \"rich-contenteditable__input--overflow\": $options.isOverMaxlength,\n \"rich-contenteditable__input--disabled\": $props.disabled\n }, \"rich-contenteditable__input\"],\n contenteditable: $options.contenteditableAttributeValue,\n \"aria-labelledby\": $props.label ? $setup.labelId : void 0,\n \"aria-placeholder\": $props.placeholder,\n \"aria-multiline\": \"true\",\n role: \"textbox\",\n \"aria-haspopup\": \"listbox\",\n \"aria-autocomplete\": \"inline\",\n \"aria-controls\": $setup.tributeId,\n \"aria-expanded\": $data.isAutocompleteOpen ? \"true\" : \"false\",\n \"aria-activedescendant\": $data.autocompleteActiveId,\n title: $options.tooltipString\n }, _ctx.$attrs, {\n onFocus: _cache[0] || (_cache[0] = (...args) => $options.moveCursorToEnd && $options.moveCursorToEnd(...args)),\n onInput: _cache[1] || (_cache[1] = (...args) => $options.onInput && $options.onInput(...args)),\n onCompositionstart: _cache[2] || (_cache[2] = ($event) => $data.isComposing = true),\n onCompositionend: _cache[3] || (_cache[3] = ($event) => $data.isComposing = false),\n onKeydownCapture: _cache[4] || (_cache[4] = withKeys((...args) => $options.onKeyEsc && $options.onKeyEsc(...args), [\"esc\"])),\n onKeydown: [\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.onEnter && $options.onEnter(...args), [\"exact\"]), [\"enter\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.onCtrlEnter && $options.onCtrlEnter(...args), [\"ctrl\", \"exact\", \"stop\", \"prevent\"]), [\"enter\"])),\n _cache[9] || (_cache[9] = withKeys(withModifiers((...args) => $options.onTributeArrowKeyDown && $options.onTributeArrowKeyDown(...args), [\"exact\", \"stop\"]), [\"up\"])),\n _cache[10] || (_cache[10] = withKeys(withModifiers((...args) => $options.onTributeArrowKeyDown && $options.onTributeArrowKeyDown(...args), [\"exact\", \"stop\"]), [\"down\"]))\n ],\n onPaste: _cache[7] || (_cache[7] = (...args) => $options.onPaste && $options.onPaste(...args)),\n onKeyupCapture: _cache[8] || (_cache[8] = withModifiers((...args) => $options.onKeyUp && $options.onKeyUp(...args), [\"stop\", \"prevent\"])),\n onTributeActiveTrue: _cache[11] || (_cache[11] = ($event) => $options.onTributeActive(true)),\n onTributeActiveFalse: _cache[12] || (_cache[12] = ($event) => $options.onTributeActive(false))\n }), null, 16, _hoisted_1),\n $props.label ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: $setup.labelId,\n class: \"rich-contenteditable__label\"\n }, toDisplayString($props.label), 9, _hoisted_2)) : createCommentVNode(\"\", true)\n ], 2);\n}\nconst cssModules = {\n \"$style\": style1\n};\nconst NcRichContenteditable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__cssModules\", cssModules], [\"__scopeId\", \"data-v-426785d7\"]]);\nexport {\n NcAutoCompleteResult as N,\n NcMentionBubble as a,\n NcRichContenteditable as b\n};\n//# sourceMappingURL=NcRichContenteditable-BREsny-v.mjs.map\n"],"names":["predicate","list","length","thisArg","value","i","CustomEvent$1","event","params","evt","TributeEvents","tribute","element","instance","o","li","keyCode","trigger","eventKeyPressed","el","info","e","collectionItem","item","count","selected","index","lis","liClientRect","menuClientRect","scrollDistance","elem","includeMargin","height","style","TributeMenuEvents","menu","func","wait","immediate","timeout","context","args","later","callNow","TributeRange","iframe","scrollTo","coordinates","menuDimensions","menuIsOffScreen","menuIsOffScreenHorizontally","menuIsOffScreenVertically","targetElement","path","offset","range","sel","text","requireLeadingSpace","hasTrailingSpace","originalEvent","replaceEvent","textSuffix","endPos","myField","startPos","html","frag","node","lastNode","ctx","ce","selectedElem","workingNodeContent","selectStartOffset","textComponent","wordsArray","worldsCount","menuAlreadyActive","allowSpaces","isAutocomplete","selectionInfo","effectiveRange","lastWordOfEffectiveRange","mostRecentTriggerCharPos","triggerChar","config","c","idx","currentTriggerSnippet","firstSnippetChar","leadingSpace","regex","str","reversedStr","cidx","len","firstChar","match","triggerIdx","windowWidth","windowHeight","doc","windowLeft","windowTop","menuTop","menuRight","menuBottom","menuLeft","dimensions","position","flipped","properties","isFirefox","div","computed","prop","span","rect","top","left","parentHeight","parentRect","scrollStillAvailable","selectedNodePosition","reasonableBuffer","clientRect","maxScrollDisplacement","elemTop","elemBottom","maxY","targetY","TributeSearch","pattern","array","string","opts","pre","post","compareString","patternCache","stringIndex","patternIndex","best","temp","score","indices","rendered","arr","prev","a","b","Tribute","values","selectClass","containerClass","itemClass","autocompleteMode","selectTemplate","menuItemTemplate","lookup","fillAttr","collection","menuContainer","noMatchTemplate","replaceTextSuffix","positionMenu","spaceSelectsMatch","searchOpts","menuItemLimit","menuShowMinLength","t","val","noMatchEvent","matchItem","wrapper","ul","processValues","items","fragment","collectionIndex","textRange","textNode","textarea","scrollPos","caretPos","front","back","content","newValues","replace","_sfc_main$2","useIsDarkTheme","getAvatarUrl","_hoisted_1$2","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","_sfc_render$2","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","normalizeClass","createElementVNode","normalizeStyle","toDisplayString","NcMentionBubble","_export_sfc","MENTION_START","MENTION_SIMPLE","MENTION_GUEST","MENTION_PREFIXED","MENTION_WITH_SPACE","MENTION_COMPLEX","USERID_REGEX","USERID_REGEX_WITH_SPACE","richEditor","escapeHTML","part","id","stripTags","data","char","props","component","Item","createApp","mount","renderedHtml","_sfc_main$1","NcUserStatusIcon","_hoisted_1$1","_hoisted_2$1","_hoisted_3","_hoisted_4","_hoisted_5","_sfc_render$1","_component_NcUserStatusIcon","resolveComponent","createBlock","createCommentVNode","NcAutoCompleteResult","register","t34","t37","style1","smilesCharacters","textSmiles","isPlaintextOnlySupported","_sfc_main","createElementId","segmenter","error","logger","n","debounce","search","callback","renderMenuItem","tributesCollection","result","query","emojiAddRecent","cb","emojiResults","emojiSearch","searchProvider","getLinkWithPicker","tmpElem","eventData","newElem","selection","clipboardData","htmlOrText","renderedContent","isActive","tributeContainer","target","withFocusVisible","_hoisted_1","_hoisted_2","_sfc_render","mergeProps","$event","withKeys","withModifiers","cssModules","NcRichContenteditable"],"mappings":"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","x_google_ignoreList":[0,1]}
\ No newline at end of file
diff --git a/dist/index-CWsyX4-P.chunk.mjs.map.license b/dist/index-B5K2wxIr.chunk.mjs.map.license
similarity index 100%
rename from dist/index-CWsyX4-P.chunk.mjs.map.license
rename to dist/index-B5K2wxIr.chunk.mjs.map.license
diff --git a/dist/index-CB6eD23u.chunk.mjs b/dist/index-BfQX65Ua.chunk.mjs
similarity index 99%
rename from dist/index-CB6eD23u.chunk.mjs
rename to dist/index-BfQX65Ua.chunk.mjs
index 2a7a4a8e4d1..9998a04d706 100644
--- a/dist/index-CB6eD23u.chunk.mjs
+++ b/dist/index-BfQX65Ua.chunk.mjs
@@ -1,8 +1,8 @@
-import{t as Ut}from"./index-Bp9-GhMo.chunk.mjs";import{W as Pt,X as jt}from"./mdi-BUoBIgaz.chunk.mjs";import{c as Ae}from"./index-n9xR3-bv.chunk.mjs";import"./preload-helper-DoJVKVMq.chunk.mjs";import"./NcIconSvgWrapper-De-2-ukl-CcvQeIAt.chunk.mjs";import"./translation-DoG5ZELJ-DJHEP2RB.chunk.mjs";import"./public-CvthP4YJ.chunk.mjs";import"./NcCheckboxRadioSwitch-D0gFwEVl-CZhGfPiT.chunk.mjs";import"./Web-rJva_rmF.chunk.mjs";import"./index-CzqMHoWC.chunk.mjs";import"./util-Caafb9Jl.chunk.mjs";import"./NcSelect-B1uITk_3-D769WsNG.chunk.mjs";import"./NcModal-kyWZ3UFC-BxKwwKAq.chunk.mjs";import"./NcEmptyContent-CDgWCt_m-MnlDvtO9.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH-C1HLa-yu.chunk.mjs";import"./NcInputField-CPL-a_MM-DHVwy56P.chunk.mjs";const Rn=(function(e,n,a){const i=Pt(a);if(!e||!e.type||!e.children)throw new Error("Expected parent node");if(typeof n=="number"){if(n<0||n===Number.POSITIVE_INFINITY)throw new Error("Expected positive finite number as index")}else if(n=e.children.indexOf(n),n<0)throw new Error("Expected child node or index");for(;++n
o&&(o=b):b&&(o!==void 0&&o>-1&&g.push(`
+import{t as Ut}from"./index-Bp9-GhMo.chunk.mjs";import{W as Pt,X as jt}from"./mdi-DvDyjK5k.chunk.mjs";import{c as Ae}from"./index-Bg3dhIrS.chunk.mjs";import"./preload-helper-DoJVKVMq.chunk.mjs";import"./NcIconSvgWrapper-De-2-ukl--5g_ebj4.chunk.mjs";import"./translation-DoG5ZELJ-8aobdbPK.chunk.mjs";import"./public-CvthP4YJ.chunk.mjs";import"./NcCheckboxRadioSwitch-D0gFwEVl-SGH3lfYx.chunk.mjs";import"./Web-Nk20LImy.chunk.mjs";import"./index-CzqMHoWC.chunk.mjs";import"./util-Caafb9Jl.chunk.mjs";import"./NcSelect-B1uITk_3-CuhbkhOJ.chunk.mjs";import"./NcModal-kyWZ3UFC-Ce2sg95E.chunk.mjs";import"./NcEmptyContent-CDgWCt_m-DuI4Nji6.chunk.mjs";import"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH-Ca14kP72.chunk.mjs";import"./NcInputField-CPL-a_MM-DjTgsHdg.chunk.mjs";const Rn=(function(e,n,a){const i=Pt(a);if(!e||!e.type||!e.children)throw new Error("Expected parent node");if(typeof n=="number"){if(n<0||n===Number.POSITIVE_INFINITY)throw new Error("Expected positive finite number as index")}else if(n=e.children.indexOf(n),n<0)throw new Error("Expected child node or index");for(;++no&&(o=b):b&&(o!==void 0&&o>-1&&g.push(`
`.repeat(o)||" "),o=-1,g.push(b))}return g.join("")}function Gn(e,n,a){return e.type==="element"?Ht(e,n,a):e.type==="text"?a.whitespace==="normal"?Hn(e,a):Zt(e):[]}function Ht(e,n,a){const i=Zn(e,a),r=e.children||[];let d=-1,s=[];if(Kt(e))return s;let l,g;for(pn(e)||Bn(e)&&Rn(n,e,Bn)?g=`
`:qt(e)?(l=2,g=2):Kn(e)&&(l=1,g=1);++d]+>")+")",s={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},g={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},b={className:"title",begin:n.optional(r)+e.IDENT_RE,relevance:0},p=n.optional(r)+e.IDENT_RE+"\\s*\\(",u=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],v=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],h=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],N={type:y,keyword:u,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:v},S={className:"function.dispatch",relevance:0,keywords:{_hint:h},begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},C=[S,o,s,a,e.C_BLOCK_COMMENT_MODE,g,l],R={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:N,contains:C.concat([{begin:/\(/,end:/\)/,keywords:N,contains:C.concat(["self"]),relevance:0}]),relevance:0},B={className:"function",begin:"("+d+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:N,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:i,keywords:N,relevance:0},{begin:p,returnBegin:!0,contains:[b],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[l,g]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:N,relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,l,g,s,{begin:/\(/,end:/\)/,keywords:N,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,l,g,s]}]},s,a,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:N,illegal:"",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(R,B,S,C,[o,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:N,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:N},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function Yt(e){const n={type:["boolean","byte","word","String"],built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]},a=Jt(e),i=a.keywords;return i.type=[...i.type,...n.type],i.literal=[...i.literal,...n.literal],i.built_in=[...i.built_in,...n.built_in],i._hints=n._hints,a.name="Arduino",a.aliases=["ino"],a.supersetOf="cpp",a}function ea(e){const n=e.regex,a={},i={begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[a]}]};Object.assign(a,{className:"variable",variants:[{begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},i]});const r={className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},d=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),s={begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,className:"string"})]}},l={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,a,r]};r.contains.push(l);const g={match:/\\"/},o={className:"string",begin:/'/,end:/'/},b={match:/\\'/},p={begin:/\$?\(\(/,end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,a]},u=["fish","bash","zsh","sh","csh","ksh","tcsh","dash","scsh"],y=e.SHEBANG({binary:`(${u.join("|")})`,relevance:10}),v={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0},h=["if","then","else","elif","fi","time","for","while","until","in","do","done","case","esac","coproc","function","select"],N=["true","false"],S={match:/(\/[a-z._-]+)+/},C=["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset"],R=["alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","sudo","type","typeset","ulimit","unalias"],B=["autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp"],D=["chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"];return{name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,keyword:h,literal:N,built_in:[...C,...R,"set","shopt",...B,...D]},contains:[y,e.SHEBANG(),v,p,d,s,S,l,g,o,b,a]}}function na(e){const n=e.regex,a=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),i="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",d="("+i+"|"+n.optional(r)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{match:/\batomic_[a-z]{3,6}\b/}]},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},g={className:"number",variants:[{match:/\b(0b[01']+)/},{match:/(-?)\b([\d']+(\.[\d']*)?|\.[\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)/},{match:/(-?)\b(0[xX][a-fA-F0-9]+(?:'[a-fA-F0-9]+)*(?:\.[a-fA-F0-9]*(?:'[a-fA-F0-9]*)*)?(?:[pP][-+]?[0-9]+)?(l|L)?(u|U)?)/},{match:/(-?)\b\d+(?:'\d+)*(?:\.\d*(?:'\d*)*)?(?:[eE][-+]?\d+)?/}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef elifdef elifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},b={className:"title",begin:n.optional(r)+e.IDENT_RE,relevance:0},p=n.optional(r)+e.IDENT_RE+"\\s*\\(",u={keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","typeof","typeof_unqual","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"],type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_BitInt","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal96","_Decimal128","_Decimal64x","_Decimal128x","_Float16","_Float32","_Float64","_Float128","_Float32x","_Float64x","_Float128x","const","static","constexpr","complex","bool","imaginary"],literal:"true false NULL",built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr"},y=[o,s,a,e.C_BLOCK_COMMENT_MODE,g,l],v={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:u,contains:y.concat([{begin:/\(/,end:/\)/,keywords:u,contains:y.concat(["self"]),relevance:0}]),relevance:0},h={begin:"("+d+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:i,keywords:u,relevance:0},{begin:p,returnBegin:!0,contains:[e.inherit(b,{className:"title.function"})],relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,l,g,s,{begin:/\(/,end:/\)/,keywords:u,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,l,g,s]}]},s,a,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C",aliases:["h"],keywords:u,disableAutodetect:!0,illegal:"",contains:[].concat(v,h,y,[o,{begin:e.IDENT_RE+"::",keywords:u},{className:"class",beginKeywords:"enum class struct union",end:/[{;:<>=]/,contains:[{beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:o,strings:l,keywords:u}}}function ta(e){const n=e.regex,a=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),i="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",d="(?!struct)("+i+"|"+n.optional(r)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",s={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},l={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},g={className:"number",variants:[{begin:"[+-]?(?:(?:[0-9](?:'?[0-9])*\\.(?:[0-9](?:'?[0-9])*)?|\\.[0-9](?:'?[0-9])*)(?:[Ee][+-]?[0-9](?:'?[0-9])*)?|[0-9](?:'?[0-9])*[Ee][+-]?[0-9](?:'?[0-9])*|0[Xx](?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*(?:\\.(?:[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)?)?|\\.[0-9A-Fa-f](?:'?[0-9A-Fa-f])*)[Pp][+-]?[0-9](?:'?[0-9])*)(?:[Ff](?:16|32|64|128)?|(BF|bf)16|[Ll]|)"},{begin:"[+-]?\\b(?:0[Bb][01](?:'?[01])*|0[Xx][0-9A-Fa-f](?:'?[0-9A-Fa-f])*|0(?:'?[0-7])*|[1-9](?:'?[0-9])*)(?:[Uu](?:LL?|ll?)|[Uu][Zz]?|(?:LL?|ll?)[Uu]?|[Zz][Uu]|)"}],relevance:0},o={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(l,{className:"string"}),{className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},b={className:"title",begin:n.optional(r)+e.IDENT_RE,relevance:0},p=n.optional(r)+e.IDENT_RE+"\\s*\\(",u=["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],y=["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],v=["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","flat_map","flat_set","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"],h=["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"],N={type:y,keyword:u,literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:v},S={className:"function.dispatch",relevance:0,keywords:{_hint:h},begin:n.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,n.lookahead(/(<[^<>]+>|)\s*\(/))},C=[S,o,s,a,e.C_BLOCK_COMMENT_MODE,g,l],R={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:N,contains:C.concat([{begin:/\(/,end:/\)/,keywords:N,contains:C.concat(["self"]),relevance:0}]),relevance:0},B={className:"function",begin:"("+d+"[\\*&\\s]+)+"+p,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:N,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:i,keywords:N,relevance:0},{begin:p,returnBegin:!0,contains:[b],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[l,g]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:N,relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,l,g,s,{begin:/\(/,end:/\)/,keywords:N,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,l,g,s]}]},s,a,e.C_BLOCK_COMMENT_MODE,o]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:N,illegal:"",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(R,B,S,C,[o,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function|flat_map|flat_set)\\s*<(?!<)",end:">",keywords:N,contains:["self",s]},{begin:e.IDENT_RE+"::",keywords:N},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}function aa(e){const n=["bool","byte","char","decimal","delegate","double","dynamic","enum","float","int","long","nint","nuint","object","sbyte","short","string","ulong","uint","ushort"],a=["public","private","protected","static","internal","protected","abstract","async","extern","override","unsafe","virtual","new","sealed","partial"],i=["default","false","null","true"],r=["abstract","as","base","break","case","catch","class","const","continue","do","else","event","explicit","extern","finally","fixed","for","foreach","goto","if","implicit","in","interface","internal","is","lock","namespace","new","operator","out","override","params","private","protected","public","readonly","record","ref","return","scoped","sealed","sizeof","stackalloc","static","struct","switch","this","throw","try","typeof","unchecked","unsafe","using","virtual","void","volatile","while"],d=["add","alias","and","ascending","args","async","await","by","descending","dynamic","equals","file","from","get","global","group","init","into","join","let","nameof","not","notnull","on","or","orderby","partial","record","remove","required","scoped","select","set","unmanaged","value|0","var","when","where","with","yield"],s={keyword:r.concat(d),built_in:n,literal:i},l=e.inherit(e.TITLE_MODE,{begin:"[a-zA-Z](\\.?\\w)*"}),g={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},o={className:"string",begin:/"""("*)(?!")(.|\n)*?"""\1/,relevance:1},b={className:"string",begin:'@"',end:'"',contains:[{begin:'""'}]},p=e.inherit(b,{illegal:/\n/}),u={className:"subst",begin:/\{/,end:/\}/,keywords:s},y=e.inherit(u,{illegal:/\n/}),v={className:"string",begin:/\$"/,end:'"',illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},e.BACKSLASH_ESCAPE,y]},h={className:"string",begin:/\$@"/,end:'"',contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},u]},N=e.inherit(h,{illegal:/\n/,contains:[{begin:/\{\{/},{begin:/\}\}/},{begin:'""'},y]});u.contains=[h,v,b,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,e.C_BLOCK_COMMENT_MODE],y.contains=[N,v,p,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,g,e.inherit(e.C_BLOCK_COMMENT_MODE,{illegal:/\n/})];const S={variants:[o,h,v,b,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},C={begin:"<",end:">",contains:[{beginKeywords:"in out"},l]},R=e.IDENT_RE+"(<"+e.IDENT_RE+"(\\s*,\\s*"+e.IDENT_RE+")*>)?(\\[\\])?",B={begin:"@"+e.IDENT_RE,relevance:0};return{name:"C#",aliases:["cs","c#"],keywords:s,illegal:/::/,contains:[e.COMMENT("///","$",{returnBegin:!0,contains:[{className:"doctag",variants:[{begin:"///",relevance:0},{begin:""},{begin:"?",end:">"}]}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"meta",begin:"#",end:"$",keywords:{keyword:"if else elif endif define undef warning error line region endregion pragma checksum"}},S,g,{beginKeywords:"class interface",relevance:0,end:/[{;=]/,illegal:/[^\s:,]/,contains:[{beginKeywords:"where class"},l,C,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"namespace",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[l,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"record",relevance:0,end:/[{;=]/,illegal:/[^\s:]/,contains:[l,C,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"meta",begin:"^\\s*\\[(?=[\\w])",excludeBegin:!0,end:"\\]",excludeEnd:!0,contains:[{className:"string",begin:/"/,end:/"/}]},{beginKeywords:"new return throw await else",relevance:0},{className:"function",begin:"("+R+"\\s+)+"+e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,end:/\s*[{;=]/,excludeEnd:!0,keywords:s,contains:[{beginKeywords:a.join(" "),relevance:0},{begin:e.IDENT_RE+"\\s*(<[^=]+>\\s*)?\\(",returnBegin:!0,contains:[e.TITLE_MODE,C],relevance:0},{match:/\(\)/},{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,relevance:0,contains:[S,g,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},B]}}const ia=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),ra=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],sa=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],oa=[...ra,...sa],la=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),ca=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),da=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),ga=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function ua(e){const n=e.regex,a=ia(e),i={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},r="and or not only",d=/@-?\w[\w]*(-\w+)*/,s="[a-zA-Z-][a-zA-Z0-9_-]*",l=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[a.BLOCK_COMMENT,i,a.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+s,relevance:0},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+ca.join("|")+")"},{begin:":(:)?("+da.join("|")+")"}]},a.CSS_VARIABLE,{className:"attribute",begin:"\\b("+ga.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[a.BLOCK_COMMENT,a.HEXCOLOR,a.IMPORTANT,a.CSS_NUMBER_MODE,...l,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...l,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},a.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:d},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:r,attribute:la.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...l,a.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+oa.join("|")+")\\b"}]}}function ba(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}function ma(e){const n={keyword:["break","case","chan","const","continue","default","defer","else","fallthrough","for","func","go","goto","if","import","interface","map","package","range","return","select","struct","switch","type","var"],type:["bool","byte","complex64","complex128","error","float32","float64","int8","int16","int32","int64","string","uint8","uint16","uint32","uint64","int","uint","uintptr","rune"],literal:["true","false","iota","nil"],built_in:["append","cap","close","complex","copy","imag","len","make","new","panic","print","println","real","recover","delete"]};return{name:"Go",aliases:["golang"],keywords:n,illegal:"",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",variants:[e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{begin:"`",end:"`"}]},{className:"number",variants:[{match:/-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/,relevance:0},{match:/-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b0[oO](_?[0-7])*i?/,relevance:0},{match:/-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/,relevance:0},{match:/-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/,relevance:0}]},{begin:/:=/},{className:"function",beginKeywords:"func",end:"\\s*(\\{|$)",excludeEnd:!0,contains:[e.TITLE_MODE,{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,illegal:/["']/}]}]}}function pa(e){const n=e.regex,a=/[_A-Za-z][_0-9A-Za-z]*/;return{name:"GraphQL",aliases:["gql"],case_insensitive:!0,disableAutodetect:!1,keywords:{keyword:["query","mutation","subscription","type","input","schema","directive","interface","union","scalar","fragment","enum","on"],literal:["true","false","null"]},contains:[e.HASH_COMMENT_MODE,e.QUOTE_STRING_MODE,e.NUMBER_MODE,{scope:"punctuation",match:/[.]{3}/,relevance:0},{scope:"punctuation",begin:/[\!\(\)\:\=\[\]\{\|\}]{1}/,relevance:0},{scope:"variable",begin:/\$/,end:/\W/,excludeEnd:!0,relevance:0},{scope:"meta",match:/@\w+/,excludeEnd:!0},{scope:"symbol",begin:n.concat(a,n.lookahead(/\s*:/)),relevance:0}],illegal:[/[;<']/,/BEGIN/]}}function fa(e){const n=e.regex,a={className:"number",relevance:0,variants:[{begin:/([+-]+)?[\d]+_[\d_]+/},{begin:e.NUMBER_RE}]},i=e.COMMENT();i.variants=[{begin:/;/,end:/$/},{begin:/#/,end:/$/}];const r={className:"variable",variants:[{begin:/\$[\w\d"][\w\d_]*/},{begin:/\$\{(.*?)\}/}]},d={className:"literal",begin:/\bon|off|true|false|yes|no\b/},s={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:"'''",end:"'''",relevance:10},{begin:'"""',end:'"""',relevance:10},{begin:'"',end:'"'},{begin:"'",end:"'"}]},l={begin:/\[/,end:/\]/,contains:[i,d,r,s,a,"self"],relevance:0},g=/[A-Za-z0-9_-]+/,o=/"(\\"|[^"])*"/,b=/'[^']*'/,p=n.either(g,o,b),u=n.concat(p,"(\\s*\\.\\s*",p,")*",n.lookahead(/\s*=\s*[^#\s]/));return{name:"TOML, also INI",aliases:["toml"],case_insensitive:!0,illegal:/\S/,contains:[i,{className:"section",begin:/\[+/,end:/\]+/},{begin:u,className:"attr",starts:{end:/$/,contains:[i,l,d,r,s,a]}}]}}var Me="[0-9](_*[0-9])*",je=`\\.(${Me})`,qe="[0-9a-fA-F](_*[0-9a-fA-F])*",zn={className:"number",variants:[{begin:`(\\b(${Me})((${je})|\\.)?|(${je}))[eE][+-]?(${Me})[fFdD]?\\b`},{begin:`\\b(${Me})((${je})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${je})[fFdD]?\\b`},{begin:`\\b(${Me})[fFdD]\\b`},{begin:`\\b0[xX]((${qe})\\.?|(${qe})?\\.(${qe}))[pP][+-]?(${Me})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${qe})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function Wn(e,n,a){return a===-1?"":e.replace(n,i=>Wn(e,n,a-1))}function ha(e){const n=e.regex,a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",i=a+Wn("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),r={keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits","goto","when"],literal:["false","true","null"],type:["char","boolean","long","float","int","byte","short","double"],built_in:["super","this"]},d={className:"meta",begin:"@"+a,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},s={className:"params",begin:/\(/,end:/\)/,keywords:r,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:r,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{begin:[n.concat(/(?!else)/,a),/\s+/,a,/\s+/,/=(?!=)/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword",3:"title.class"},contains:[s,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+i+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:r,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:r,relevance:0,contains:[d,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,zn,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},zn,d]}}const Fn="[A-Za-z$_][0-9A-Za-z$_]*",_a=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],ya=["true","false","null","undefined","NaN","Infinity"],Xn=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],Qn=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Vn=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Ea=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],wa=[].concat(Vn,Xn,Qn);function va(e){const n=e.regex,a=(L,{after:Z})=>{const ae=""+L[0].slice(1);return L.input.indexOf(ae,Z)!==-1},i=Fn,r={begin:"<>",end:">"},d=/<[A-Za-z0-9\\._:-]+\s*\/>/,s={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(L,Z)=>{const ae=L[0].length+L.index,ge=L.input[ae];if(ge==="<"||ge===","){Z.ignoreMatch();return}ge===">"&&(a(L,{after:ae})||Z.ignoreMatch());let se;const ie=L.input.substring(ae);if(se=ie.match(/^\s*=/)){Z.ignoreMatch();return}if((se=ie.match(/^\s+extends\s+/))&&se.index===0){Z.ignoreMatch();return}}},l={$pattern:Fn,keyword:_a,literal:ya,built_in:wa,"variable.language":Ea},g="[0-9](_?[0-9])*",o=`\\.(${g})`,b="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${b})((${o})|\\.)?|(${o}))[eE][+-]?(${g})\\b`},{begin:`\\b(${b})\\b((${o})\\b|\\.)?|(${o})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:l,contains:[]},y={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},v={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"css"}},h={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},N={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,u]},S={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},C=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,v,h,N,{match:/\$\d+/},p];u.contains=C.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(C)});const R=[].concat(S,u.contains),B=R.concat([{begin:/(\s*)\(/,end:/\)/,keywords:l,contains:["self"].concat(R)}]),D={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:B},V={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,n.concat(i,"(",n.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},H={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...Xn,...Qn]}},J={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},q={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[D],illegal:/%/},le={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function de(L){return n.concat("(?!",L.join("|"),")")}const ce={match:n.concat(/\b/,de([...Vn,"super","import"].map(L=>`${L}\\s*\\(`)),i,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},Y={begin:n.concat(/\./,n.lookahead(n.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},j={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},D]},te="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",ye={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(te)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[D]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:H},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),J,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,v,h,N,S,{match:/\$\d+/},p,H,{scope:"attr",match:i+n.lookahead(":"),relevance:0},ye,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[S,e.REGEXP_MODE,{className:"function",begin:te,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:d},{begin:s.begin,"on:begin":s.isTrulyOpeningTag,end:s.end}],subLanguage:"xml",contains:[{begin:s.begin,end:s.end,skip:!0,contains:["self"]}]}]},q,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[D,e.inherit(e.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},Y,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[D]},ce,le,V,j,{match:/\$[(.]/}]}}function Na(e){const n={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},a={match:/[{}[\],:]/,className:"punctuation",relevance:0},i=["true","false","null"],r={scope:"literal",beginKeywords:i.join(" ")};return{name:"JSON",aliases:["jsonc"],keywords:{literal:i},contains:[n,a,e.QUOTE_STRING_MODE,r,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}var Oe="[0-9](_*[0-9])*",Ke=`\\.(${Oe})`,Ge="[0-9a-fA-F](_*[0-9a-fA-F])*",ka={className:"number",variants:[{begin:`(\\b(${Oe})((${Ke})|\\.)?|(${Ke}))[eE][+-]?(${Oe})[fFdD]?\\b`},{begin:`\\b(${Oe})((${Ke})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${Ke})[fFdD]?\\b`},{begin:`\\b(${Oe})[fFdD]\\b`},{begin:`\\b0[xX]((${Ge})\\.?|(${Ge})?\\.(${Ge}))[pP][+-]?(${Oe})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${Ge})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function xa(e){const n={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},a={className:"keyword",begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol",begin:/@\w+/}]}},i={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@"},r={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},d={className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},s={className:"string",variants:[{begin:'"""',end:'"""(?=[^"])',contains:[d,r]},{begin:"'",end:"'",illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/,contains:[e.BACKSLASH_ESCAPE,d,r]}]};r.contains.push(s);const l={className:"meta",begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?"},g={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/,end:/\)/,contains:[e.inherit(s,{className:"string"}),"self"]}]},o=ka,b=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),p={variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/,contains:[]}]},u=p;return u.variants[1].contains=[p],p.variants[1].contains=[u],{name:"Kotlin",aliases:["kt","kts"],keywords:n,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,b,a,i,l,g,{className:"function",beginKeywords:"fun",end:"[(]|$",returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0,contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin:/,end:/>/,keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/,endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/,endsWithParent:!0,contains:[p,e.C_LINE_COMMENT_MODE,b],relevance:0},e.C_LINE_COMMENT_MODE,b,l,g,s,e.C_NUMBER_MODE]},b]},{begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0,illegal:"extends implements",contains:[{beginKeywords:"public protected internal private constructor"},e.UNDERSCORE_TITLE_MODE,{className:"type",begin:/,end:/>/,excludeBegin:!0,excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/,excludeBegin:!0,returnEnd:!0},l,g]},s,{className:"meta",begin:"^#!/usr/bin/env",end:"$",illegal:`
`},o]}}const Sa=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Ma=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Oa=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Aa=[...Ma,...Oa],Ca=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),Jn=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Yn=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),Ta=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse(),Ra=Jn.concat(Yn).sort().reverse();function Ia(e){const n=Sa(e),a=Ra,i="and or not only",r="[\\w-]+",d="("+r+"|@\\{"+r+"\\})",s=[],l=[],g=function(R){return{className:"string",begin:"~?"+R+".*?"+R}},o=function(R,B,D){return{className:R,begin:B,relevance:D}},b={$pattern:/[a-z-]+/,keyword:i,attribute:Ca.join(" ")},p={begin:"\\(",end:"\\)",contains:l,keywords:b,relevance:0};l.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,g("'"),g('"'),n.CSS_NUMBER_MODE,{begin:"(url|data-uri)\\(",starts:{className:"string",end:"[\\)\\n]",excludeEnd:!0}},n.HEXCOLOR,p,o("variable","@@?"+r,10),o("variable","@\\{"+r+"\\}"),o("built_in","~?`[^`]*?`"),{className:"attribute",begin:r+"\\s*:",end:":",returnBegin:!0,excludeEnd:!0},n.IMPORTANT,{beginKeywords:"and not"},n.FUNCTION_DISPATCH);const u=l.concat({begin:/\{/,end:/\}/,contains:s}),y={beginKeywords:"when",endsWithParent:!0,contains:[{beginKeywords:"and not"}].concat(l)},v={begin:d+"\\s*:",returnBegin:!0,end:/[;}]/,relevance:0,contains:[{begin:/-(webkit|moz|ms|o)-/},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+Ta.join("|")+")\\b",end:/(?=:)/,starts:{endsWithParent:!0,illegal:"[<=$]",relevance:0,contains:l}}]},h={className:"keyword",begin:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{end:"[;{}]",keywords:b,returnEnd:!0,contains:l,relevance:0}},N={className:"variable",variants:[{begin:"@"+r+"\\s*:",relevance:15},{begin:"@"+r}],starts:{end:"[;}]",returnEnd:!0,contains:u}},S={variants:[{begin:"[\\.#:&\\[>]",end:"[;{}]"},{begin:d,end:/\{/}],returnBegin:!0,returnEnd:!0,illegal:`[<='$"]`,relevance:0,contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,y,o("keyword","all\\b"),o("variable","@\\{"+r+"\\}"),{begin:"\\b("+Aa.join("|")+")\\b",className:"selector-tag"},n.CSS_NUMBER_MODE,o("selector-tag",d,0),o("selector-id","#"+d),o("selector-class","\\."+d,0),o("selector-tag","&",0),n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",begin:":("+Jn.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+Yn.join("|")+")"},{begin:/\(/,end:/\)/,relevance:0,contains:u},{begin:"!important"},n.FUNCTION_DISPATCH]},C={begin:r+`:(:)?(${a.join("|")})`,returnBegin:!0,contains:[S]};return s.push(e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,h,N,C,v,S,y,n.FUNCTION_DISPATCH),{name:"Less",case_insensitive:!0,illegal:`[=>'/<($"]`,contains:s}}function Da(e){const n="\\[=*\\[",a="\\]=*\\]",i={begin:n,end:a,contains:["self"]},r=[e.COMMENT("--(?!"+n+")","$"),e.COMMENT("--"+n,a,{contains:[i],relevance:10})];return{name:"Lua",aliases:["pluto"],keywords:{$pattern:e.UNDERSCORE_IDENT_RE,literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},contains:r.concat([{className:"function",beginKeywords:"function",end:"\\)",contains:[e.inherit(e.TITLE_MODE,{begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",begin:"\\(",endsWithParent:!0,contains:r}].concat(r)},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",begin:n,end:a,contains:[i],relevance:5}])}}function La(e){const n={className:"variable",variants:[{begin:"\\$\\("+e.UNDERSCORE_IDENT_RE+"\\)",contains:[e.BACKSLASH_ESCAPE]},{begin:/\$[@%\^\+\*]/}]},a={className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,n]},i={className:"variable",begin:/\$\([\w-]+\s/,end:/\)/,keywords:{built_in:"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value"},contains:[n,a]},r={begin:"^"+e.UNDERSCORE_IDENT_RE+"\\s*(?=[:+?]?=)"},d={className:"meta",begin:/^\.PHONY:/,end:/$/,keywords:{$pattern:/[\.\w]+/,keyword:".PHONY"}},s={className:"section",begin:/^[^\s]+:/,end:/$/,contains:[n]};return{name:"Makefile",aliases:["mk","mak","make"],keywords:{$pattern:/[\w-]+/,keyword:"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath"},contains:[e.HASH_COMMENT_MODE,n,a,i,r,d,s]}}function Ba(e){const n=e.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},r={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},d={className:"bullet",begin:"^[ ]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},s={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},l=/[A-Za-z][A-Za-z0-9+.-]*/,g={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:n.concat(/\[.+?\]\(/,l,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},o={className:"strong",contains:[],variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]},b={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{begin:/_(?![_\s])/,end:/_/,relevance:0}]},p=e.inherit(o,{contains:[]}),u=e.inherit(b,{contains:[]});o.contains.push(u),b.contains.push(p);let y=[a,g];return[o,b,p,u].forEach(v=>{v.contains=v.contains.concat(y)}),y=y.concat(o,b),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:y},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:y}]}]},a,d,o,b,{className:"quote",begin:"^>\\s+",contains:y,end:"$"},r,i,g,s,{scope:"literal",match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}function za(e){const n={className:"built_in",begin:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},a=/[a-zA-Z@][a-zA-Z0-9_]*/,i={"variable.language":["this","super"],$pattern:a,keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"],literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"],built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"],type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"]},r={$pattern:a,keyword:["@interface","@class","@protocol","@implementation"]};return{name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"],keywords:i,illegal:"",contains:[n,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,{className:"string",variants:[{begin:'@"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]}]},{className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),{className:"string",begin:/<.*?>/,end:/$/,illegal:"\\n"},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class",begin:"("+r.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:r,contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE,relevance:0}]}}function Fa(e){const n=e.regex,a=["abs","accept","alarm","and","atan2","bind","binmode","bless","break","caller","chdir","chmod","chomp","chop","chown","chr","chroot","class","close","closedir","connect","continue","cos","crypt","dbmclose","dbmopen","defined","delete","die","do","dump","each","else","elsif","endgrent","endhostent","endnetent","endprotoent","endpwent","endservent","eof","eval","exec","exists","exit","exp","fcntl","field","fileno","flock","for","foreach","fork","format","formline","getc","getgrent","getgrgid","getgrnam","gethostbyaddr","gethostbyname","gethostent","getlogin","getnetbyaddr","getnetbyname","getnetent","getpeername","getpgrp","getpriority","getprotobyname","getprotobynumber","getprotoent","getpwent","getpwnam","getpwuid","getservbyname","getservbyport","getservent","getsockname","getsockopt","given","glob","gmtime","goto","grep","gt","hex","if","index","int","ioctl","join","keys","kill","last","lc","lcfirst","length","link","listen","local","localtime","log","lstat","lt","ma","map","method","mkdir","msgctl","msgget","msgrcv","msgsnd","my","ne","next","no","not","oct","open","opendir","or","ord","our","pack","package","pipe","pop","pos","print","printf","prototype","push","q|0","qq","quotemeta","qw","qx","rand","read","readdir","readline","readlink","readpipe","recv","redo","ref","rename","require","reset","return","reverse","rewinddir","rindex","rmdir","say","scalar","seek","seekdir","select","semctl","semget","semop","send","setgrent","sethostent","setnetent","setpgrp","setpriority","setprotoent","setpwent","setservent","setsockopt","shift","shmctl","shmget","shmread","shmwrite","shutdown","sin","sleep","socket","socketpair","sort","splice","split","sprintf","sqrt","srand","stat","state","study","sub","substr","symlink","syscall","sysopen","sysread","sysseek","system","syswrite","tell","telldir","tie","tied","time","times","tr","truncate","uc","ucfirst","umask","undef","unless","unlink","unpack","unshift","untie","until","use","utime","values","vec","wait","waitpid","wantarray","warn","when","while","write","x|0","xor","y|0"],i=/[dualxmsipngr]{0,12}/,r={$pattern:/[\w.]+/,keyword:a.join(" ")},d={className:"subst",begin:"[$@]\\{",end:"\\}",keywords:r},s={begin:/->\{/,end:/\}/},l={scope:"attr",match:/\s+:\s*\w+(\s*\(.*?\))?/},g={scope:"variable",variants:[{begin:/\$\d/},{begin:n.concat(/[$%@](?!")(\^\w\b|#\w+(::\w+)*|\{\w+\}|\w+(::\w*)*)/,"(?![A-Za-z])(?![@$%])")},{begin:/[$%@](?!")[^\s\w{=]|\$=/,relevance:0}],contains:[l]},o={className:"number",variants:[{match:/0?\.[0-9][0-9_]+\b/},{match:/\bv?(0|[1-9][0-9_]*(\.[0-9_]+)?|[1-9][0-9_]*)\b/},{match:/\b0[0-7][0-7_]*\b/},{match:/\b0x[0-9a-fA-F][0-9a-fA-F_]*\b/},{match:/\b0b[0-1][0-1_]*\b/}],relevance:0},b=[e.BACKSLASH_ESCAPE,d,g],p=[/!/,/\//,/\|/,/\?/,/'/,/"/,/#/],u=(h,N,S="\\1")=>{const C=S==="\\1"?S:n.concat(S,N);return n.concat(n.concat("(?:",h,")"),N,/(?:\\.|[^\\\/])*?/,C,/(?:\\.|[^\\\/])*?/,S,i)},y=(h,N,S)=>n.concat(n.concat("(?:",h,")"),N,/(?:\\.|[^\\\/])*?/,S,i),v=[g,e.HASH_COMMENT_MODE,e.COMMENT(/^=\w/,/=cut/,{endsWithParent:!0}),s,{className:"string",contains:b,variants:[{begin:"q[qwxr]?\\s*\\(",end:"\\)",relevance:5},{begin:"q[qwxr]?\\s*\\[",end:"\\]",relevance:5},{begin:"q[qwxr]?\\s*\\{",end:"\\}",relevance:5},{begin:"q[qwxr]?\\s*\\|",end:"\\|",relevance:5},{begin:"q[qwxr]?\\s*<",end:">",relevance:5},{begin:"qw\\s+q",end:"q",relevance:5},{begin:"'",end:"'",contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"'},{begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE]},{begin:/\{\w+\}/,relevance:0},{begin:"-?\\w+\\s*=>",relevance:0}]},o,{begin:"(\\/\\/|"+e.RE_STARTERS_RE+"|\\b(split|return|print|reverse|grep)\\b)\\s*",keywords:"split return print reverse grep",relevance:0,contains:[e.HASH_COMMENT_MODE,{className:"regexp",variants:[{begin:u("s|tr|y",n.either(...p,{capture:!0}))},{begin:u("s|tr|y","\\(","\\)")},{begin:u("s|tr|y","\\[","\\]")},{begin:u("s|tr|y","\\{","\\}")}],relevance:2},{className:"regexp",variants:[{begin:/(m|qr)\/\//,relevance:0},{begin:y("(?:m|qr)?",/\//,/\//)},{begin:y("m|qr",n.either(...p,{capture:!0}),/\1/)},{begin:y("m|qr",/\(/,/\)/)},{begin:y("m|qr",/\[/,/\]/)},{begin:y("m|qr",/\{/,/\}/)}]}]},{className:"function",beginKeywords:"sub method",end:"(\\s*\\(.*?\\))?[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,l]},{className:"class",beginKeywords:"class",end:"[;{]",excludeEnd:!0,relevance:5,contains:[e.TITLE_MODE,l,o]},{begin:"-\\w\\b",relevance:0},{begin:"^__DATA__$",end:"^__END__$",subLanguage:"mojolicious",contains:[{begin:"^@@.*",end:"$",className:"comment"}]}];return d.contains=v,s.contains=v,{name:"Perl",aliases:["pl","pm"],keywords:r,contains:v}}function $a(e){const n=e.regex,a=/(?![A-Za-z0-9])(?![$])/,i=n.concat(/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/,a),r=n.concat(/(\\?[A-Z][a-z0-9_\x7f-\xff]+|\\?[A-Z]+(?=[A-Z][a-z0-9_\x7f-\xff])){1,}/,a),d=n.concat(/[A-Z]+/,a),s={scope:"variable",match:"\\$+"+i},l={scope:"meta",variants:[{begin:/<\?php/,relevance:10},{begin:/<\?=/},{begin:/<\?/,relevance:.1},{begin:/\?>/}]},g={scope:"subst",variants:[{begin:/\$\w+/},{begin:/\{\$/,end:/\}/}]},o=e.inherit(e.APOS_STRING_MODE,{illegal:null}),b=e.inherit(e.QUOTE_STRING_MODE,{illegal:null,contains:e.QUOTE_STRING_MODE.contains.concat(g)}),p={begin:/<<<[ \t]*(?:(\w+)|"(\w+)")\n/,end:/[ \t]*(\w+)\b/,contains:e.QUOTE_STRING_MODE.contains.concat(g),"on:begin":(Y,j)=>{j.data._beginMatch=Y[1]||Y[2]},"on:end":(Y,j)=>{j.data._beginMatch!==Y[1]&&j.ignoreMatch()}},u=e.END_SAME_AS_BEGIN({begin:/<<<[ \t]*'(\w+)'\n/,end:/[ \t]*(\w+)\b/}),y=`[
]`,v={scope:"string",variants:[b,o,p,u]},h={scope:"number",variants:[{begin:"\\b0[bB][01]+(?:_[01]+)*\\b"},{begin:"\\b0[oO][0-7]+(?:_[0-7]+)*\\b"},{begin:"\\b0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*\\b"},{begin:"(?:\\b\\d+(?:_\\d+)*(\\.(?:\\d+(?:_\\d+)*))?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?"}],relevance:0},N=["false","null","true"],S=["__CLASS__","__DIR__","__FILE__","__FUNCTION__","__COMPILER_HALT_OFFSET__","__LINE__","__METHOD__","__NAMESPACE__","__TRAIT__","die","echo","exit","include","include_once","print","require","require_once","array","abstract","and","as","binary","bool","boolean","break","callable","case","catch","class","clone","const","continue","declare","default","do","double","else","elseif","empty","enddeclare","endfor","endforeach","endif","endswitch","endwhile","enum","eval","extends","final","finally","float","for","foreach","from","global","goto","if","implements","instanceof","insteadof","int","integer","interface","isset","iterable","list","match|0","mixed","new","never","object","or","private","protected","public","readonly","real","return","string","switch","throw","trait","try","unset","use","var","void","while","xor","yield"],C=["Error|0","AppendIterator","ArgumentCountError","ArithmeticError","ArrayIterator","ArrayObject","AssertionError","BadFunctionCallException","BadMethodCallException","CachingIterator","CallbackFilterIterator","CompileError","Countable","DirectoryIterator","DivisionByZeroError","DomainException","EmptyIterator","ErrorException","Exception","FilesystemIterator","FilterIterator","GlobIterator","InfiniteIterator","InvalidArgumentException","IteratorIterator","LengthException","LimitIterator","LogicException","MultipleIterator","NoRewindIterator","OutOfBoundsException","OutOfRangeException","OuterIterator","OverflowException","ParentIterator","ParseError","RangeException","RecursiveArrayIterator","RecursiveCachingIterator","RecursiveCallbackFilterIterator","RecursiveDirectoryIterator","RecursiveFilterIterator","RecursiveIterator","RecursiveIteratorIterator","RecursiveRegexIterator","RecursiveTreeIterator","RegexIterator","RuntimeException","SeekableIterator","SplDoublyLinkedList","SplFileInfo","SplFileObject","SplFixedArray","SplHeap","SplMaxHeap","SplMinHeap","SplObjectStorage","SplObserver","SplPriorityQueue","SplQueue","SplStack","SplSubject","SplTempFileObject","TypeError","UnderflowException","UnexpectedValueException","UnhandledMatchError","ArrayAccess","BackedEnum","Closure","Fiber","Generator","Iterator","IteratorAggregate","Serializable","Stringable","Throwable","Traversable","UnitEnum","WeakReference","WeakMap","Directory","__PHP_Incomplete_Class","parent","php_user_filter","self","static","stdClass"],R={keyword:S,literal:(Y=>{const j=[];return Y.forEach(te=>{j.push(te),te.toLowerCase()===te?j.push(te.toUpperCase()):j.push(te.toLowerCase())}),j})(N),built_in:C},B=Y=>Y.map(j=>j.replace(/\|\d+$/,"")),D={variants:[{match:[/new/,n.concat(y,"+"),n.concat("(?!",B(C).join("\\b|"),"\\b)"),r],scope:{1:"keyword",4:"title.class"}}]},V=n.concat(i,"\\b(?!\\()"),H={variants:[{match:[n.concat(/::/,n.lookahead(/(?!class\b)/)),V],scope:{2:"variable.constant"}},{match:[/::/,/class/],scope:{2:"variable.language"}},{match:[r,n.concat(/::/,n.lookahead(/(?!class\b)/)),V],scope:{1:"title.class",3:"variable.constant"}},{match:[r,n.concat("::",n.lookahead(/(?!class\b)/))],scope:{1:"title.class"}},{match:[r,/::/,/class/],scope:{1:"title.class",3:"variable.language"}}]},J={scope:"attr",match:n.concat(i,n.lookahead(":"),n.lookahead(/(?!::)/))},q={relevance:0,begin:/\(/,end:/\)/,keywords:R,contains:[J,s,H,e.C_BLOCK_COMMENT_MODE,v,h,D]},le={relevance:0,match:[/\b/,n.concat("(?!fn\\b|function\\b|",B(S).join("\\b|"),"|",B(C).join("\\b|"),"\\b)"),i,n.concat(y,"*"),n.lookahead(/(?=\()/)],scope:{3:"title.function.invoke"},contains:[q]};q.contains.push(le);const de=[J,H,e.C_BLOCK_COMMENT_MODE,v,h,D],ce={begin:n.concat(/#\[\s*\\?/,n.either(r,d)),beginScope:"meta",end:/]/,endScope:"meta",keywords:{literal:N,keyword:["new","array"]},contains:[{begin:/\[/,end:/]/,keywords:{literal:N,keyword:["new","array"]},contains:["self",...de]},...de,{scope:"meta",variants:[{match:r},{match:d}]}]};return{case_insensitive:!1,keywords:R,contains:[ce,e.HASH_COMMENT_MODE,e.COMMENT("//","$"),e.COMMENT("/\\*","\\*/",{contains:[{scope:"doctag",match:"@[A-Za-z]+"}]}),{match:/__halt_compiler\(\);/,keywords:"__halt_compiler",starts:{scope:"comment",end:e.MATCH_NOTHING_RE,contains:[{match:/\?>/,scope:"meta",endsParent:!0}]}},l,{scope:"variable.language",match:/\$this\b/},s,le,H,{match:[/const/,/\s/,i],scope:{1:"keyword",3:"variable.constant"}},D,{scope:"function",relevance:0,beginKeywords:"fn function",end:/[;{]/,excludeEnd:!0,illegal:"[$%\\[]",contains:[{beginKeywords:"use"},e.UNDERSCORE_TITLE_MODE,{begin:"=>",endsParent:!0},{scope:"params",begin:"\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0,keywords:R,contains:["self",ce,s,H,e.C_BLOCK_COMMENT_MODE,v,h]}]},{scope:"class",variants:[{beginKeywords:"enum",illegal:/[($"]/},{beginKeywords:"class interface trait",illegal:/[:($"]/}],relevance:0,end:/\{/,excludeEnd:!0,contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE]},{beginKeywords:"namespace",relevance:0,end:";",illegal:/[.']/,contains:[e.inherit(e.UNDERSCORE_TITLE_MODE,{scope:"title.class"})]},{beginKeywords:"use",relevance:0,end:";",contains:[{match:/\b(as|const|function)\b/,scope:"keyword"},e.UNDERSCORE_TITLE_MODE]},v,h]}}function Ua(e){return{name:"PHP template",subLanguage:"xml",contains:[{begin:/<\?(php|=)?/,end:/\?>/,subLanguage:"php",contains:[{begin:"/\\*",end:"\\*/",skip:!0},{begin:'b"',end:'"',skip:!0},{begin:"b'",end:"'",skip:!0},e.inherit(e.APOS_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null,className:null,contains:null,skip:!0})]}]}}function Pa(e){return{name:"Plain text",aliases:["text","txt"],disableAutodetect:!0}}function ja(e){const n=e.regex,a=new RegExp("[\\p{XID_Start}_]\\p{XID_Continue}*","u"),i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],r={$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]},d={className:"meta",begin:/^(>>>|\.\.\.) /},s={className:"subst",begin:/\{/,end:/\}/,keywords:r,illegal:/#/},l={begin:/\{\{/,relevance:0},g={className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,d],relevance:10},{begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,d],relevance:10},{begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,contains:[e.BACKSLASH_ESCAPE,d,l,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,end:/"""/,contains:[e.BACKSLASH_ESCAPE,d,l,s]},{begin:/([uU]|[rR])'/,end:/'/,relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,contains:[e.BACKSLASH_ESCAPE,l,s]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,contains:[e.BACKSLASH_ESCAPE,l,s]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},o="[0-9](_?[0-9])*",b=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,p=`\\b|${i.join("|")}`,u={className:"number",relevance:0,variants:[{begin:`(\\b(${o})|(${b}))[eE][+-]?(${o})[jJ]?(?=${p})`},{begin:`(${b})[jJ]?`},{begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${p})`},{begin:`\\b0[bB](_?[01])+[lL]?(?=${p})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${p})`},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${p})`},{begin:`\\b(${o})[jJ](?=${p})`}]},y={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:r,contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},v={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:r,contains:["self",d,u,g,e.HASH_COMMENT_MODE]}]};return s.contains=[g,u,d],{name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:r,illegal:/(<\/|\?)|=>/,contains:[d,u,{scope:"variable.language",match:/\bself\b/},{beginKeywords:"if",relevance:0},{match:/\bor\b/,scope:"keyword"},g,y,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[v]},{variants:[{match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}],scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[u,v,g]}]}}function qa(e){return{aliases:["pycon"],contains:[{className:"meta.prompt",starts:{end:/ |$/,starts:{end:"$",subLanguage:"python"}},variants:[{begin:/^>>>(?=[ ]|$)/},{begin:/^\.\.\.(?=[ ]|$)/}]}]}}function Ka(e){const n=e.regex,a=/(?:(?:[a-zA-Z]|\.[._a-zA-Z])[._a-zA-Z0-9]*)|\.(?!\d)/,i=n.either(/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*[pP][+-]?\d+i?/,/0[xX][0-9a-fA-F]+(?:[pP][+-]?\d+)?[Li]?/,/(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?[Li]?/),r=/[=!<>:]=|\|\||&&|:::?|<-|<<-|->>|->|\|>|[-+*\/?!$&|:<=>@^~]|\*\*/,d=n.either(/[()]/,/[{}]/,/\[\[/,/[[\]]/,/\\/,/,/);return{name:"R",keywords:{$pattern:a,keyword:"function if in break next repeat else for while",literal:"NULL NA TRUE FALSE Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10",built_in:"LETTERS letters month.abb month.name pi T F abs acos acosh all any anyNA Arg as.call as.character as.complex as.double as.environment as.integer as.logical as.null.default as.numeric as.raw asin asinh atan atanh attr attributes baseenv browser c call ceiling class Conj cos cosh cospi cummax cummin cumprod cumsum digamma dim dimnames emptyenv exp expression floor forceAndCall gamma gc.time globalenv Im interactive invisible is.array is.atomic is.call is.character is.complex is.double is.environment is.expression is.finite is.function is.infinite is.integer is.language is.list is.logical is.matrix is.na is.name is.nan is.null is.numeric is.object is.pairlist is.raw is.recursive is.single is.symbol lazyLoadDBfetch length lgamma list log max min missing Mod names nargs nzchar oldClass on.exit pos.to.env proc.time prod quote range Re rep retracemem return round seq_along seq_len seq.int sign signif sin sinh sinpi sqrt standardGeneric substitute sum switch tan tanh tanpi tracemem trigamma trunc unclass untracemem UseMethod xtfrm"},contains:[e.COMMENT(/#'/,/$/,{contains:[{scope:"doctag",match:/@examples/,starts:{end:n.lookahead(n.either(/\n^#'\s*(?=@[a-zA-Z]+)/,/\n^(?!#')/)),endsParent:!0}},{scope:"doctag",begin:"@param",end:/$/,contains:[{scope:"variable",variants:[{match:a},{match:/`(?:\\.|[^`\\])+`/}],endsParent:!0}]},{scope:"doctag",match:/@[a-zA-Z]+/},{scope:"keyword",match:/\\[a-zA-Z]+/}]}),e.HASH_COMMENT_MODE,{scope:"string",contains:[e.BACKSLASH_ESCAPE],variants:[e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\(/,end:/\)(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\{/,end:/\}(-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]"(-*)\[/,end:/\](-*)"/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\(/,end:/\)(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\{/,end:/\}(-*)'/}),e.END_SAME_AS_BEGIN({begin:/[rR]'(-*)\[/,end:/\](-*)'/}),{begin:'"',end:'"',relevance:0},{begin:"'",end:"'",relevance:0}]},{relevance:0,variants:[{scope:{1:"operator",2:"number"},match:[r,i]},{scope:{1:"operator",2:"number"},match:[/%[^%]*%/,i]},{scope:{1:"punctuation",2:"number"},match:[d,i]},{scope:{2:"number"},match:[/[^a-zA-Z0-9._]|^/,i]}]},{scope:{3:"operator"},match:[a,/\s+/,/<-/,/\s+/]},{scope:"operator",relevance:0,variants:[{match:r},{match:/%[^%]*%/}]},{scope:"punctuation",relevance:0,match:d},{begin:"`",end:"`",contains:[{begin:/\\./}]}]}}function Ga(e){const n=e.regex,a="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",i=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),r=n.concat(i,/(::\w+)*/),d={"variable.constant":["__FILE__","__LINE__","__ENCODING__"],"variable.language":["self","super"],keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"],built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"],literal:["true","false","nil"]},s={className:"doctag",begin:"@[A-Za-z]+"},l={begin:"#<",end:">"},g=[e.COMMENT("#","$",{contains:[s]}),e.COMMENT("^=begin","^=end",{contains:[s],relevance:10}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],o={className:"subst",begin:/#\{/,end:/\}/,keywords:d},b={className:"string",contains:[e.BACKSLASH_ESCAPE,o],variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?,end:/>/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)),contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/,contains:[e.BACKSLASH_ESCAPE,o]})]}]},p="[1-9](_?[0-9])*|0",u="[0-9](_?[0-9])*",y={className:"number",relevance:0,variants:[{begin:`\\b(${p})(\\.(${u}))?([eE][+-]?(${u})|r)?i?\\b`},{begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{begin:"\\b0(_?[0-7])+r?i?\\b"}]},v={variants:[{match:/\(\)/},{className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0,keywords:d}]},h=[b,{variants:[{match:[/class\s+/,r,/\s+<\s+/,r]},{match:[/\b(class|module)\s+/,r]}],scope:{2:"title.class",4:"title.class.inherited"},keywords:d},{match:[/(include|extend)\s+/,r],scope:{2:"title.class"},keywords:d},{relevance:0,match:[r,/\.new[. (]/],scope:{1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"},{relevance:0,match:i,scope:"title.class"},{match:[/def/,/\s+/,a],scope:{1:"keyword",3:"title.function"},contains:[v]},{begin:e.IDENT_RE+"::"},{className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol",begin:":(?!\\s)",contains:[b,{begin:a}],relevance:0},y,{className:"variable",begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{className:"params",begin:/\|(?!=)/,end:/\|/,excludeBegin:!0,excludeEnd:!0,relevance:0,keywords:d},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,o],illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}]}].concat(l,g),relevance:0}].concat(l,g);o.contains=h,v.contains=h;const N=[{begin:/^\s*=>/,starts:{end:"$",contains:h}},{className:"meta.prompt",begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])",starts:{end:"$",keywords:d,contains:h}}];return g.unshift(l),{name:"Ruby",aliases:["rb","gemspec","podspec","thor","irb"],keywords:d,illegal:/\/\*/,contains:[e.SHEBANG({binary:"ruby"})].concat(N).concat(g).concat(h)}}function Ha(e){const n=e.regex,a=/(r#)?/,i=n.concat(a,e.UNDERSCORE_IDENT_RE),r=n.concat(a,e.IDENT_RE),d={className:"title.function.invoke",relevance:0,begin:n.concat(/\b/,/(?!let|for|while|if|else|match\b)/,r,n.lookahead(/\s*\(/))},s="([ui](8|16|32|64|128|size)|f(32|64))?",l=["abstract","as","async","await","become","box","break","const","continue","crate","do","dyn","else","enum","extern","false","final","fn","for","if","impl","in","let","loop","macro","match","mod","move","mut","override","priv","pub","ref","return","self","Self","static","struct","super","trait","true","try","type","typeof","union","unsafe","unsized","use","virtual","where","while","yield"],g=["true","false","Some","None","Ok","Err"],o=["drop ","Copy","Send","Sized","Sync","Drop","Fn","FnMut","FnOnce","ToOwned","Clone","Debug","PartialEq","PartialOrd","Eq","Ord","AsRef","AsMut","Into","From","Default","Iterator","Extend","IntoIterator","DoubleEndedIterator","ExactSizeIterator","SliceConcatExt","ToString","assert!","assert_eq!","bitflags!","bytes!","cfg!","col!","concat!","concat_idents!","debug_assert!","debug_assert_eq!","env!","eprintln!","panic!","file!","format!","format_args!","include_bytes!","include_str!","line!","local_data_key!","module_path!","option_env!","print!","println!","select!","stringify!","try!","unimplemented!","unreachable!","vec!","write!","writeln!","macro_rules!","assert_ne!","debug_assert_ne!"],b=["i8","i16","i32","i64","i128","isize","u8","u16","u32","u64","u128","usize","f32","f64","str","char","bool","Box","Option","Result","String","Vec"];return{name:"Rust",aliases:["rs"],keywords:{$pattern:e.IDENT_RE+"!?",type:b,keyword:l,literal:g,built_in:o},illegal:"",contains:[e.C_LINE_COMMENT_MODE,e.COMMENT("/\\*","\\*/",{contains:["self"]}),e.inherit(e.QUOTE_STRING_MODE,{begin:/b?"/,illegal:null}),{className:"symbol",begin:/'[a-zA-Z_][a-zA-Z0-9_]*(?!')/},{scope:"string",variants:[{begin:/b?r(#*)"(.|\n)*?"\1(?!#)/},{begin:/b?'/,end:/'/,contains:[{scope:"char.escape",match:/\\('|\w|x\w{2}|u\w{4}|U\w{8})/}]}]},{className:"number",variants:[{begin:"\\b0b([01_]+)"+s},{begin:"\\b0o([0-7_]+)"+s},{begin:"\\b0x([A-Fa-f0-9_]+)"+s},{begin:"\\b(\\d[\\d_]*(\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)"+s}],relevance:0},{begin:[/fn/,/\s+/,i],className:{1:"keyword",3:"title.function"}},{className:"meta",begin:"#!?\\[",end:"\\]",contains:[{className:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]}]},{begin:[/let/,/\s+/,/(?:mut\s+)?/,i],className:{1:"keyword",3:"keyword",4:"variable"}},{begin:[/for/,/\s+/,i,/\s+/,/in/],className:{1:"keyword",3:"variable",5:"keyword"}},{begin:[/type/,/\s+/,i],className:{1:"keyword",3:"title.class"}},{begin:[/(?:trait|enum|struct|union|impl|for)/,/\s+/,i],className:{1:"keyword",3:"title.class"}},{begin:e.IDENT_RE+"::",keywords:{keyword:"Self",built_in:o,type:b}},{className:"punctuation",begin:"->"},d]}}const Za=e=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),Wa=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","optgroup","option","p","picture","q","quote","samp","section","select","source","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],Xa=["defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],Qa=[...Wa,...Xa],Va=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),Ja=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),Ya=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),ei=["accent-color","align-content","align-items","align-self","alignment-baseline","all","anchor-name","animation","animation-composition","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-range","animation-range-end","animation-range-start","animation-timeline","animation-timing-function","appearance","aspect-ratio","backdrop-filter","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-position-x","background-position-y","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-end-end-radius","border-end-start-radius","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-start-end-radius","border-start-start-radius","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-align","box-decoration-break","box-direction","box-flex","box-flex-group","box-lines","box-ordinal-group","box-orient","box-pack","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","color-scheme","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","contain-intrinsic-block-size","contain-intrinsic-height","contain-intrinsic-inline-size","contain-intrinsic-size","contain-intrinsic-width","container","container-name","container-type","content","content-visibility","counter-increment","counter-reset","counter-set","cue","cue-after","cue-before","cursor","cx","cy","direction","display","dominant-baseline","empty-cells","enable-background","field-sizing","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flood-color","flood-opacity","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-optical-sizing","font-palette","font-size","font-size-adjust","font-smooth","font-smoothing","font-stretch","font-style","font-synthesis","font-synthesis-position","font-synthesis-small-caps","font-synthesis-style","font-synthesis-weight","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-emoji","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","forced-color-adjust","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphenate-character","hyphenate-limit-chars","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","initial-letter","initial-letter-align","inline-size","inset","inset-area","inset-block","inset-block-end","inset-block-start","inset-inline","inset-inline-end","inset-inline-start","isolation","justify-content","justify-items","justify-self","kerning","left","letter-spacing","lighting-color","line-break","line-height","line-height-step","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","margin-trim","marker","marker-end","marker-mid","marker-start","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","masonry-auto-flow","math-depth","math-shift","math-style","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","offset","offset-anchor","offset-distance","offset-path","offset-position","offset-rotate","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-anchor","overflow-block","overflow-clip-margin","overflow-inline","overflow-wrap","overflow-x","overflow-y","overlay","overscroll-behavior","overscroll-behavior-block","overscroll-behavior-inline","overscroll-behavior-x","overscroll-behavior-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","paint-order","pause","pause-after","pause-before","perspective","perspective-origin","place-content","place-items","place-self","pointer-events","position","position-anchor","position-visibility","print-color-adjust","quotes","r","resize","rest","rest-after","rest-before","right","rotate","row-gap","ruby-align","ruby-position","scale","scroll-behavior","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scroll-timeline","scroll-timeline-axis","scroll-timeline-name","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","speak","speak-as","src","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","tab-size","table-layout","text-align","text-align-all","text-align-last","text-anchor","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-skip-ink","text-decoration-style","text-decoration-thickness","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-size-adjust","text-transform","text-underline-offset","text-underline-position","text-wrap","text-wrap-mode","text-wrap-style","timeline-scope","top","touch-action","transform","transform-box","transform-origin","transform-style","transition","transition-behavior","transition-delay","transition-duration","transition-property","transition-timing-function","translate","unicode-bidi","user-modify","user-select","vector-effect","vertical-align","view-timeline","view-timeline-axis","view-timeline-inset","view-timeline-name","view-transition-name","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","white-space-collapse","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index","zoom"].sort().reverse();function ni(e){const n=Za(e),a=Ya,i=Ja,r="@[a-z-]+",d="and or not only",s={className:"variable",begin:"(\\$[a-zA-Z-][a-zA-Z0-9_-]*)\\b",relevance:0};return{name:"SCSS",case_insensitive:!0,illegal:"[=/|']",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,n.CSS_NUMBER_MODE,{className:"selector-id",begin:"#[A-Za-z0-9_-]+",relevance:0},{className:"selector-class",begin:"\\.[A-Za-z0-9_-]+",relevance:0},n.ATTRIBUTE_SELECTOR_MODE,{className:"selector-tag",begin:"\\b("+Qa.join("|")+")\\b",relevance:0},{className:"selector-pseudo",begin:":("+i.join("|")+")"},{className:"selector-pseudo",begin:":(:)?("+a.join("|")+")"},s,{begin:/\(/,end:/\)/,contains:[n.CSS_NUMBER_MODE]},n.CSS_VARIABLE,{className:"attribute",begin:"\\b("+ei.join("|")+")\\b"},{begin:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{begin:/:/,end:/[;}{]/,relevance:0,contains:[n.BLOCK_COMMENT,s,n.HEXCOLOR,n.CSS_NUMBER_MODE,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.IMPORTANT,n.FUNCTION_DISPATCH]},{begin:"@(page|font-face)",keywords:{$pattern:r,keyword:"@page @font-face"}},{begin:"@",end:"[{;]",returnBegin:!0,keywords:{$pattern:/[a-z-]+/,keyword:d,attribute:Va.join(" ")},contains:[{begin:r,className:"keyword"},{begin:/[a-z-]+(?=:)/,className:"attribute"},s,e.QUOTE_STRING_MODE,e.APOS_STRING_MODE,n.HEXCOLOR,n.CSS_NUMBER_MODE]},n.FUNCTION_DISPATCH]}}function ti(e){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta.prompt",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}function ai(e){const n=e.regex,a=e.COMMENT("--","$"),i={scope:"string",variants:[{begin:/'/,end:/'/,contains:[{match:/''/}]}]},r={begin:/"/,end:/"/,contains:[{match:/""/}]},d=["true","false","unknown"],s=["double precision","large object","with timezone","without timezone"],l=["bigint","binary","blob","boolean","char","character","clob","date","dec","decfloat","decimal","float","int","integer","interval","nchar","nclob","national","numeric","real","row","smallint","time","timestamp","varchar","varying","varbinary"],g=["add","asc","collation","desc","final","first","last","view"],o=["abs","acos","all","allocate","alter","and","any","are","array","array_agg","array_max_cardinality","as","asensitive","asin","asymmetric","at","atan","atomic","authorization","avg","begin","begin_frame","begin_partition","between","bigint","binary","blob","boolean","both","by","call","called","cardinality","cascaded","case","cast","ceil","ceiling","char","char_length","character","character_length","check","classifier","clob","close","coalesce","collate","collect","column","commit","condition","connect","constraint","contains","convert","copy","corr","corresponding","cos","cosh","count","covar_pop","covar_samp","create","cross","cube","cume_dist","current","current_catalog","current_date","current_default_transform_group","current_path","current_role","current_row","current_schema","current_time","current_timestamp","current_path","current_role","current_transform_group_for_type","current_user","cursor","cycle","date","day","deallocate","dec","decimal","decfloat","declare","default","define","delete","dense_rank","deref","describe","deterministic","disconnect","distinct","double","drop","dynamic","each","element","else","empty","end","end_frame","end_partition","end-exec","equals","escape","every","except","exec","execute","exists","exp","external","extract","false","fetch","filter","first_value","float","floor","for","foreign","frame_row","free","from","full","function","fusion","get","global","grant","group","grouping","groups","having","hold","hour","identity","in","indicator","initial","inner","inout","insensitive","insert","int","integer","intersect","intersection","interval","into","is","join","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","language","large","last_value","lateral","lead","leading","left","like","like_regex","listagg","ln","local","localtime","localtimestamp","log","log10","lower","match","match_number","match_recognize","matches","max","member","merge","method","min","minute","mod","modifies","module","month","multiset","national","natural","nchar","nclob","new","no","none","normalize","not","nth_value","ntile","null","nullif","numeric","octet_length","occurrences_regex","of","offset","old","omit","on","one","only","open","or","order","out","outer","over","overlaps","overlay","parameter","partition","pattern","per","percent","percent_rank","percentile_cont","percentile_disc","period","portion","position","position_regex","power","precedes","precision","prepare","primary","procedure","ptf","range","rank","reads","real","recursive","ref","references","referencing","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","release","result","return","returns","revoke","right","rollback","rollup","row","row_number","rows","running","savepoint","scope","scroll","search","second","seek","select","sensitive","session_user","set","show","similar","sin","sinh","skip","smallint","some","specific","specifictype","sql","sqlexception","sqlstate","sqlwarning","sqrt","start","static","stddev_pop","stddev_samp","submultiset","subset","substring","substring_regex","succeeds","sum","symmetric","system","system_time","system_user","table","tablesample","tan","tanh","then","time","timestamp","timezone_hour","timezone_minute","to","trailing","translate","translate_regex","translation","treat","trigger","trim","trim_array","true","truncate","uescape","union","unique","unknown","unnest","update","upper","user","using","value","values","value_of","var_pop","var_samp","varbinary","varchar","varying","versioning","when","whenever","where","width_bucket","window","with","within","without","year"],b=["abs","acos","array_agg","asin","atan","avg","cast","ceil","ceiling","coalesce","corr","cos","cosh","count","covar_pop","covar_samp","cume_dist","dense_rank","deref","element","exp","extract","first_value","floor","json_array","json_arrayagg","json_exists","json_object","json_objectagg","json_query","json_table","json_table_primitive","json_value","lag","last_value","lead","listagg","ln","log","log10","lower","max","min","mod","nth_value","ntile","nullif","percent_rank","percentile_cont","percentile_disc","position","position_regex","power","rank","regr_avgx","regr_avgy","regr_count","regr_intercept","regr_r2","regr_slope","regr_sxx","regr_sxy","regr_syy","row_number","sin","sinh","sqrt","stddev_pop","stddev_samp","substring","substring_regex","sum","tan","tanh","translate","translate_regex","treat","trim","trim_array","unnest","upper","value_of","var_pop","var_samp","width_bucket"],p=["current_catalog","current_date","current_default_transform_group","current_path","current_role","current_schema","current_transform_group_for_type","current_user","session_user","system_time","system_user","current_time","localtime","current_timestamp","localtimestamp"],u=["create table","insert into","primary key","foreign key","not null","alter table","add constraint","grouping sets","on overflow","character set","respect nulls","ignore nulls","nulls first","nulls last","depth first","breadth first"],y=b,v=[...o,...g].filter(D=>!b.includes(D)),h={scope:"variable",match:/@[a-z0-9][a-z0-9_]*/},N={scope:"operator",match:/[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,relevance:0},S={match:n.concat(/\b/,n.either(...y),/\s*\(/),relevance:0,keywords:{built_in:y}};function C(D){return n.concat(/\b/,n.either(...D.map(V=>V.replace(/\s+/,"\\s+"))),/\b/)}const R={scope:"keyword",match:C(u),relevance:0};function B(D,{exceptions:V,when:H}={}){const J=H;return V=V||[],D.map(q=>q.match(/\|\d+$/)||V.includes(q)?q:J(q)?`${q}|0`:q)}return{name:"SQL",case_insensitive:!0,illegal:/[{}]|<\//,keywords:{$pattern:/\b[\w\.]+/,keyword:B(v,{when:D=>D.length<3}),literal:d,type:l,built_in:p},contains:[{scope:"type",match:C(s)},R,S,h,i,r,e.C_NUMBER_MODE,e.C_BLOCK_COMMENT_MODE,a,N]}}function et(e){return e?typeof e=="string"?e:e.source:null}function Re(e){return $("(?=",e,")")}function $(...e){return e.map(n=>et(n)).join("")}function ii(e){const n=e[e.length-1];return typeof n=="object"&&n.constructor===Object?(e.splice(e.length-1,1),n):{}}function re(...e){return"("+(ii(e).capture?"":"?:")+e.map(n=>et(n)).join("|")+")"}const fn=e=>$(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ri=["Protocol","Type"].map(fn),$n=["init","self"].map(fn),si=["Any","Self"],un=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","borrowing","break","case","catch","class","consume","consuming","continue","convenience","copy","default","defer","deinit","didSet","distributed","do","dynamic","each","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","macro","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","package","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],Un=["false","nil","true"],oi=["assignment","associativity","higherThan","left","lowerThan","none","right"],li=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warning"],Pn=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],nt=re(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),tt=re(nt,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),bn=$(nt,tt,"*"),at=re(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Ze=re(at,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),pe=$(at,Ze,"*"),He=$(/[A-Z]/,Ze,"*"),ci=["attached","autoclosure",$(/convention\(/,re("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","freestanding","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",$(/objc\(/,pe,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","Sendable","testable","UIApplicationMain","unchecked","unknown","usableFromInline","warn_unqualified_access"],di=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"];function gi(e){const n={match:/\s+/,relevance:0},a=e.COMMENT("/\\*","\\*/",{contains:["self"]}),i=[e.C_LINE_COMMENT_MODE,a],r={match:[/\./,re(...ri,...$n)],className:{2:"keyword"}},d={match:$(/\./,re(...un)),relevance:0},s=un.filter(z=>typeof z=="string").concat(["_|0"]),l=un.filter(z=>typeof z!="string").concat(si).map(fn),g={variants:[{className:"keyword",match:re(...l,...$n)}]},o={$pattern:re(/\b\w+/,/#\w+/),keyword:s.concat(li),literal:Un},b=[r,d,g],p={match:$(/\./,re(...Pn)),relevance:0},u={className:"built_in",match:$(/\b/,re(...Pn),/(?=\()/)},y=[p,u],v={match:/->/,relevance:0},h={className:"operator",relevance:0,variants:[{match:bn},{match:`\\.(\\.|${tt})+`}]},N=[v,h],S="([0-9]_*)+",C="([0-9a-fA-F]_*)+",R={className:"number",relevance:0,variants:[{match:`\\b(${S})(\\.(${S}))?([eE][+-]?(${S}))?\\b`},{match:`\\b0x(${C})(\\.(${C}))?([pP][+-]?(${S}))?\\b`},{match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},B=(z="")=>({className:"subst",variants:[{match:$(/\\/,z,/[0\\tnr"']/)},{match:$(/\\/,z,/u\{[0-9a-fA-F]{1,8}\}/)}]}),D=(z="")=>({className:"subst",match:$(/\\/,z,/[\t ]*(?:[\r\n]|\r\n)/)}),V=(z="")=>({className:"subst",label:"interpol",begin:$(/\\/,z,/\(/),end:/\)/}),H=(z="")=>({begin:$(z,/"""/),end:$(/"""/,z),contains:[B(z),D(z),V(z)]}),J=(z="")=>({begin:$(z,/"/),end:$(/"/,z),contains:[B(z),V(z)]}),q={className:"string",variants:[H(),H("#"),H("##"),H("###"),J(),J("#"),J("##"),J("###")]},le=[e.BACKSLASH_ESCAPE,{begin:/\[/,end:/\]/,relevance:0,contains:[e.BACKSLASH_ESCAPE]}],de={begin:/\/[^\s](?=[^/\n]*\/)/,end:/\//,contains:le},ce=z=>{const ke=$(z,/\//),Ee=$(/\//,z);return{begin:ke,end:Ee,contains:[...le,{scope:"comment",begin:`#(?!.*${Ee})`,end:/$/}]}},Y={scope:"regexp",variants:[ce("###"),ce("##"),ce("#"),de]},j={match:$(/`/,pe,/`/)},te={className:"variable",match:/\$\d+/},ye={className:"variable",match:`\\$${Ze}+`},L=[j,te,ye],Z={match:/(@|#(un)?)available/,scope:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:di,contains:[...N,R,q]}]}},ae={scope:"keyword",match:$(/@/,re(...ci),Re(re(/\(/,/\s+/)))},ge={scope:"meta",match:$(/@/,pe)},se=[Z,ae,ge],ie={match:Re(/\b[A-Z]/),relevance:0,contains:[{className:"type",match:$(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Ze,"+")},{className:"type",match:He,relevance:0},{match:/[?!]+/,relevance:0},{match:/\.\.\./,relevance:0},{match:$(/\s+&\s+/,Re(He)),relevance:0}]},Xe={begin:/,end:/>/,keywords:o,contains:[...i,...b,...se,v,ie]};ie.contains.push(Xe);const Qe={match:$(pe,/\s*:/),keywords:"_|0",relevance:0},Ie={begin:/\(/,end:/\)/,relevance:0,keywords:o,contains:["self",Qe,...i,Y,...b,...y,...N,R,q,...L,...se,ie]},Ce={begin:/,end:/>/,keywords:"repeat each",contains:[...i,ie]},Ve={begin:re(Re($(pe,/\s*:/)),Re($(pe,/\s+/,pe,/\s*:/))),end:/:/,relevance:0,contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:pe}]},De={begin:/\(/,end:/\)/,keywords:o,contains:[Ve,...i,...b,...N,R,q,...se,ie,Ie],endsParent:!0,illegal:/["']/},Ne={match:[/(func|macro)/,/\s+/,re(j.match,pe,bn)],className:{1:"keyword",3:"title.function"},contains:[Ce,De,n],illegal:[/\[/,/%/]},Je={match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"},contains:[Ce,De,n],illegal:/\[|%/},Ye={match:[/operator/,/\s+/,bn],className:{1:"keyword",3:"title"}},en={begin:[/precedencegroup/,/\s+/,He],className:{1:"keyword",3:"title"},contains:[ie],keywords:[...oi,...Un],end:/}/},nn={match:[/class\b/,/\s+/,/func\b/,/\s+/,/\b[A-Za-z_][A-Za-z0-9_]*\b/],scope:{1:"keyword",3:"keyword",5:"title.function"}},tn={match:[/class\b/,/\s+/,/var\b/],scope:{1:"keyword",3:"keyword"}},an={begin:[/(struct|protocol|class|extension|enum|actor)/,/\s+/,pe,/\s*/],beginScope:{1:"keyword",3:"title.class"},keywords:o,contains:[Ce,...b,{begin:/:/,end:/\{/,keywords:o,contains:[{scope:"title.class.inherited",match:He},...b],relevance:0}]};for(const z of q.variants){const ke=z.contains.find(Le=>Le.label==="interpol");ke.keywords=o;const Ee=[...b,...y,...N,R,q,...L];ke.contains=[...Ee,{begin:/\(/,end:/\)/,contains:["self",...Ee]}]}return{name:"Swift",keywords:o,contains:[...i,Ne,Je,nn,tn,an,Ye,en,{beginKeywords:"import",end:/$/,contains:[...i],relevance:0},Y,...b,...y,...N,R,q,...L,...se,ie,Ie]}}const We="[A-Za-z$_][0-9A-Za-z$_]*",it=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],rt=["true","false","null","undefined","NaN","Infinity"],st=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],ot=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],lt=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],ct=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],dt=[].concat(lt,st,ot);function ui(e){const n=e.regex,a=(L,{after:Z})=>{const ae=""+L[0].slice(1);return L.input.indexOf(ae,Z)!==-1},i=We,r={begin:"<>",end:">"},d=/<[A-Za-z0-9\\._:-]+\s*\/>/,s={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(L,Z)=>{const ae=L[0].length+L.index,ge=L.input[ae];if(ge==="<"||ge===","){Z.ignoreMatch();return}ge===">"&&(a(L,{after:ae})||Z.ignoreMatch());let se;const ie=L.input.substring(ae);if(se=ie.match(/^\s*=/)){Z.ignoreMatch();return}if((se=ie.match(/^\s+extends\s+/))&&se.index===0){Z.ignoreMatch();return}}},l={$pattern:We,keyword:it,literal:rt,built_in:dt,"variable.language":ct},g="[0-9](_?[0-9])*",o=`\\.(${g})`,b="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",p={className:"number",variants:[{begin:`(\\b(${b})((${o})|\\.)?|(${o}))[eE][+-]?(${g})\\b`},{begin:`\\b(${b})\\b((${o})\\b|\\.)?|(${o})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},u={className:"subst",begin:"\\$\\{",end:"\\}",keywords:l,contains:[]},y={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"xml"}},v={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"css"}},h={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,u],subLanguage:"graphql"}},N={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,u]},S={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:i+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},C=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,v,h,N,{match:/\$\d+/},p];u.contains=C.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(C)});const R=[].concat(S,u.contains),B=R.concat([{begin:/(\s*)\(/,end:/\)/,keywords:l,contains:["self"].concat(R)}]),D={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:B},V={variants:[{match:[/class/,/\s+/,i,/\s+/,/extends/,/\s+/,n.concat(i,"(",n.concat(/\./,i),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,i],scope:{1:"keyword",3:"title.class"}}]},H={relevance:0,match:n.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...st,...ot]}},J={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},q={variants:[{match:[/function/,/\s+/,i,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[D],illegal:/%/},le={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function de(L){return n.concat("(?!",L.join("|"),")")}const ce={match:n.concat(/\b/,de([...lt,"super","import"].map(L=>`${L}\\s*\\(`)),i,n.lookahead(/\s*\(/)),className:"title.function",relevance:0},Y={begin:n.concat(/\./,n.lookahead(n.concat(i,/(?![0-9A-Za-z$_(])/))),end:i,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},j={match:[/get|set/,/\s+/,i,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},D]},te="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",ye={match:[/const|var|let/,/\s+/,i,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(te)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[D]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:B,CLASS_REFERENCE:H},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),J,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,y,v,h,N,S,{match:/\$\d+/},p,H,{scope:"attr",match:i+n.lookahead(":"),relevance:0},ye,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[S,e.REGEXP_MODE,{className:"function",begin:te,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:B}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:r.begin,end:r.end},{match:d},{begin:s.begin,"on:begin":s.isTrulyOpeningTag,end:s.end}],subLanguage:"xml",contains:[{begin:s.begin,end:s.end,skip:!0,contains:["self"]}]}]},q,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[D,e.inherit(e.TITLE_MODE,{begin:i,className:"title.function"})]},{match:/\.\.\./,relevance:0},Y,{match:"\\$"+i,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[D]},ce,le,V,j,{match:/\$[(.]/}]}}function bi(e){const n=e.regex,a=ui(e),i=We,r=["any","void","number","boolean","string","object","never","symbol","bigint","unknown"],d={begin:[/namespace/,/\s+/,e.IDENT_RE],beginScope:{1:"keyword",3:"title.class"}},s={beginKeywords:"interface",end:/\{/,excludeEnd:!0,keywords:{keyword:"interface extends",built_in:r},contains:[a.exports.CLASS_REFERENCE]},l={className:"meta",relevance:10,begin:/^\s*['"]use strict['"]/},g=["type","interface","public","private","protected","implements","declare","abstract","readonly","enum","override","satisfies"],o={$pattern:We,keyword:it.concat(g),literal:rt,built_in:dt.concat(r),"variable.language":ct},b={className:"meta",begin:"@"+i},p=(h,N,S)=>{const C=h.contains.findIndex(R=>R.label===N);if(C===-1)throw new Error("can not find mode to replace");h.contains.splice(C,1,S)};Object.assign(a.keywords,o),a.exports.PARAMS_CONTAINS.push(b);const u=a.contains.find(h=>h.scope==="attr"),y=Object.assign({},u,{match:n.concat(i,n.lookahead(/\s*\?:/))});a.exports.PARAMS_CONTAINS.push([a.exports.CLASS_REFERENCE,u,y]),a.contains=a.contains.concat([b,d,s,y]),p(a,"shebang",e.SHEBANG()),p(a,"use_strict",l);const v=a.contains.find(h=>h.label==="func.def");return v.relevance=0,Object.assign(a,{name:"TypeScript",aliases:["ts","tsx","mts","cts"]}),a}function mi(e){const n=e.regex,a={className:"string",begin:/"(""|[^/n])"C\b/},i={className:"string",begin:/"/,end:/"/,illegal:/\n/,contains:[{begin:/""/}]},r=/\d{1,2}\/\d{1,2}\/\d{4}/,d=/\d{4}-\d{1,2}-\d{1,2}/,s=/(\d|1[012])(:\d+){0,2} *(AM|PM)/,l=/\d{1,2}(:\d{1,2}){1,2}/,g={className:"literal",variants:[{begin:n.concat(/# */,n.either(d,r),/ *#/)},{begin:n.concat(/# */,l,/ *#/)},{begin:n.concat(/# */,s,/ *#/)},{begin:n.concat(/# */,n.either(d,r),/ +/,n.either(s,l),/ *#/)}]},o={className:"number",relevance:0,variants:[{begin:/\b\d[\d_]*((\.[\d_]+(E[+-]?[\d_]+)?)|(E[+-]?[\d_]+))[RFD@!#]?/},{begin:/\b\d[\d_]*((U?[SIL])|[%&])?/},{begin:/&H[\dA-F_]+((U?[SIL])|[%&])?/},{begin:/&O[0-7_]+((U?[SIL])|[%&])?/},{begin:/&B[01_]+((U?[SIL])|[%&])?/}]},b={className:"label",begin:/^\w+:/},p=e.COMMENT(/'''/,/$/,{contains:[{className:"doctag",begin:/<\/?/,end:/>/}]}),u=e.COMMENT(null,/$/,{variants:[{begin:/'/},{begin:/([\t ]|^)REM(?=\s)/}]});return{name:"Visual Basic .NET",aliases:["vb"],case_insensitive:!0,classNameAliases:{label:"symbol"},keywords:{keyword:"addhandler alias aggregate ansi as async assembly auto binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into iterator join key let lib loop me mid module mustinherit mustoverride mybase myclass namespace narrowing new next notinheritable notoverridable of off on operator option optional order overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly yield",built_in:"addressof and andalso await directcast gettype getxmlnamespace is isfalse isnot istrue like mod nameof new not or orelse trycast typeof xor cbool cbyte cchar cdate cdbl cdec cint clng cobj csbyte cshort csng cstr cuint culng cushort",type:"boolean byte char date decimal double integer long object sbyte short single string uinteger ulong ushort",literal:"true false nothing"},illegal:"//|\\{|\\}|endif|gosub|variant|wend|^\\$ ",contains:[a,i,g,o,b,p,u,{className:"meta",begin:/[\t ]*#(const|disable|else|elseif|enable|end|externalsource|if|region)\b/,end:/$/,keywords:{keyword:"const disable else elseif enable end externalsource if region then"},contains:[u]}]}}function pi(e){e.regex;const n=e.COMMENT(/\(;/,/;\)/);n.contains.push("self");const a=e.COMMENT(/;;/,/$/),i=["anyfunc","block","br","br_if","br_table","call","call_indirect","data","drop","elem","else","end","export","func","global.get","global.set","local.get","local.set","local.tee","get_global","get_local","global","if","import","local","loop","memory","memory.grow","memory.size","module","mut","nop","offset","param","result","return","select","set_global","set_local","start","table","tee_local","then","type","unreachable"],r={begin:[/(?:func|call|call_indirect)/,/\s+/,/\$[^\s)]+/],className:{1:"keyword",3:"title.function"}},d={className:"variable",begin:/\$[\w_]+/},s={match:/(\((?!;)|\))+/,className:"punctuation",relevance:0},l={className:"number",relevance:0,match:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/},g={match:/(i32|i64|f32|f64)(?!\.)/,className:"type"},o={className:"keyword",match:/\b(f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))\b/};return{name:"WebAssembly",keywords:{$pattern:/[\w.]+/,keyword:i},contains:[a,n,{match:[/(?:offset|align)/,/\s*/,/=/],className:{1:"keyword",3:"operator"}},d,s,r,e.QUOTE_STRING_MODE,g,o,l]}}function fi(e){const n=e.regex,a=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),i=/[\p{L}0-9._:-]+/u,r={className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},d={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},s=e.inherit(d,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"string"}),g=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),o={endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",begin:i,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[r]},{begin:/'/,end:/'/,contains:[r]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[d,g,l,s,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[d,s,g,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},r,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[g]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/