From c68c4b9294246ab6af91e5cea1c18cc80a10b2ba Mon Sep 17 00:00:00 2001 From: Marvin Beym Date: Fri, 27 Feb 2026 07:53:10 +0100 Subject: [PATCH 1/7] Implement async options loading for HasOptionFilter interface --- .../js/Input/Field/dist/input.factory.min.js | 4 +- .../Field/src/OptionFilter/OptionFilter.js | 297 +++++++++++++++++- .../src/OptionFilter/OptionFilterFactory.js | 21 +- .../Component/Input/Field/HasOptionFilter.php | 10 +- .../Component/Input/Field/HasOptionFilter.php | 45 ++- .../Input/Field/HasOptionFilterInternal.php | 8 + .../Component/Input/Field/MultiSelect.php | 11 + .../Component/Input/Field/Radio.php | 16 +- .../Component/Input/Field/Renderer.php | 15 +- .../default/Input/tpl.option_filter.html | 1 + lang/ilias_de.lang | 1 + lang/ilias_en.lang | 1 + package-lock.json | 4 + 13 files changed, 425 insertions(+), 9 deletions(-) diff --git a/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js b/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js index 04d1d0b07553..09536dd950a4 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js +++ b/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js @@ -12,7 +12,7 @@ * https://www.ilias.de * https://github.com/ILIAS-eLearning */ -!function(t,e,n){"use strict";class i{textarea;remainder=null;constructor(t){if(this.textarea=document.getElementById(t),null===this.textarea)throw new Error(`Could not find textarea for input-id '${t}'.`);if(this.shouldShowRemainder()){if(this.remainder=this.textarea.parentNode.querySelector('[data-action="remainder"]'),!this.remainder instanceof HTMLSpanElement)throw new Error(`Could not find remainder-element for input-id '${t}'.`);this.textarea.addEventListener("input",(()=>{this.updateRemainderCountHook()}))}}updateRemainderCountHook(){this.shouldShowRemainder()&&null!==this.remainder&&(this.remainder.innerHTML=(this.textarea.maxLength-this.textarea.value.length).toString())}updateTextareaContent(t,e=null,n=null){if(!this.isDisabled()){if(this.isContentTooLarge(t))return this.updateRemainderCountHook(),void this.textarea.focus();e=e??this.textarea.selectionStart,n=n??this.textarea.selectionEnd,this.textarea.value=t,ethis.textarea.selectionEnd?this.textarea.selectionStart:this.textarea.selectionEnd}getLinesBeforeSelection(){return a(this.textarea.value).slice(0,s(this.getTextBeforeSelection()))}getLinesAfterSelection(){const t=a(this.textarea.value);return t.slice(s(this.getTextBeforeSelection()+this.getTextOfSelection())+1,t.length)}getLinesOfSelection(){const t=a(this.textarea.value);return t.slice(this.getLinesBeforeSelection().length,t.length-this.getLinesAfterSelection().length)}isContentTooLarge(t){const e=this.getMaxLength();return!(e<0)&&e0}getMaxLength(){return Number(this.textarea.getAttribute("maxlength")??-1)}isDisabled(){return this.textarea.disabled}}function s(t){return(t.match(/\n/g)??[]).length}function a(t){return t.split(/\n/)}class o{instances=[];init(t){if(void 0!==this.instances[t])throw new Error(`Textarea with input-id '${t}' has already been initialized.`);this.instances[t]=new i(t)}get(t){return this.instances[t]??null}}class r{preview_parameter;preview_url;constructor(t,e){this.preview_parameter=t,this.preview_url=e}async getPreviewHtmlOf(t){if(0===t.length)return"";let e=new FormData;return e.append(this.preview_parameter,t),(await fetch(this.preview_url,{method:"POST",body:e})).text()}}const l="textarea",d="preview";class c extends i{preview_history=[];preview_renderer;content_wrappers;view_controls;actions;constructor(t,e){super(e);const n=this.textarea.closest(".c-field-markdown");if(null===n)throw new Error(`Could not find input-wrapper for input-id '${e}'.`);this.preview_renderer=t,this.content_wrappers=function(t){const e=new Map;return e.set(l,t.querySelector("textarea")),e.set(d,t.querySelector(".c-field-markdown__preview")),e.forEach((t=>{if(null===t)throw new Error("Could not find all content-wrappers for markdown-input.")})),e}(n),this.view_controls=function(t){const e=t.querySelector(".il-viewcontrol-mode")?.getElementsByTagName("button");if(!e instanceof HTMLCollection||2!==e.length)throw new Error("Could not find exactly two view-controls.");return[...e]}(n),this.actions=function(t){const e=t.querySelector(".c-field-markdown__actions")?.getElementsByTagName("button");if(e instanceof HTMLCollection)return[...e];return[]}(n);let i=!0;this.textarea.addEventListener("keydown",(t=>{i=this.handleEnterKeyBeforeInsertionHook(t)})),this.textarea.addEventListener("keyup",(t=>{this.handleEnterKeyAfterInsertionHook(t,i)})),this.actions.forEach((t=>{t.addEventListener("click",(t=>{this.performMarkdownActionHook(t)}))})),this.view_controls.forEach((t=>{t.addEventListener("click",(()=>{this.toggleViewingModeHook()}))}))}handleEnterKeyAfterInsertionHook(t,e){if(!e||!p(t))return;const n=this.getLinesBeforeSelection().pop();void 0!==n&&m(n)?this.applyTransformationToSelection(u):void 0!==n&&v(n)&&this.insertSingleEnumeration()}handleEnterKeyBeforeInsertionHook(t){if(!p(t))return!1;const e=this.getLinesOfSelection().shift();if(void 0===e||!((e.match(/((^(\s*-)|(^(\s*\d+\.)))\s*)$/g)??[]).length>0))return!0;let n=this.getLinesBeforeSelection().join("\n"),i=this.getLinesAfterSelection().join("\n");return n.length>0&&(n+="\n"),i.length>0&&(i=`\n${i}`),this.updateTextareaContent(n+i,this.getAbsoluteSelectionStart()-e.length,this.getAbsoluteSelectionEnd()-e.length),t.preventDefault(),!1}performMarkdownActionHook(t){const e=function(t){const e=t.closest("span[data-action]");if(!e instanceof HTMLSpanElement)return null;if(!e.hasAttribute("data-action"))return null;return e.dataset.action}(t.target);switch(e){case"insert-heading":this.insertCharactersAroundSelection("# ","");break;case"insert-link":this.insertCharactersAroundSelection("[","](url)");break;case"insert-bold":this.insertCharactersAroundSelection("**","**");break;case"insert-italic":this.insertCharactersAroundSelection("_","_");break;case"insert-bullet-points":this.applyTransformationToSelection(u);break;case"insert-enumeration":this.isMultilineTextSelected()?this.applyTransformationToSelection(h):this.insertSingleEnumeration();break;default:throw new Error(`Could not perform markdown-action '${e}'.`)}}toggleViewingModeHook(){this.content_wrappers.forEach((t=>{g(t,"hidden")})),this.view_controls.forEach((t=>{g(t,"engaged")})),this.isDisabled()||this.actions.forEach((t=>{t.disabled=!t.disabled;const e=t.querySelector(".glyph");null!==e&&g(e,"disabled")})),this.maybeUpdatePreviewContent()}insertSingleEnumeration(){const t=this.getLinesOfSelection();if(1!==t.length)return void this.textarea.focus();const e=this.getLinesBeforeSelection(),n=e.length-1;let i=n>=0?function(t){const e=t.match(/([0-9]+)/);if(null!==e)return parseInt(e[0]);return null}(e[n])??0:0;const s=h(t,++i),a=function(t,e=0){if(t.length<1)return[];const n=[];for(const i of t){if(!v(i))break;n.push(i.replace(/([0-9]+)/,(++e).toString()))}n.length>0&&(t=n.concat(t.slice(n.length)));return t}(this.getLinesAfterSelection(),i);let o=e.join("\n");const r=a.join("\n");let l=s.join("\n");o.length>0&&l.length>0&&(o+="\n"),l.length>0&&r.length>0&&(l+="\n");const d=o+l+r,c=d.length-this.textarea.value.length;this.updateTextareaContent(d,this.getAbsoluteSelectionStart()+c,this.getAbsoluteSelectionEnd()+c)}applyTransformationToSelection(t){if(!t instanceof Function)throw new Error(`Transformation must be an instance of Function, ${typeof t} given.`);const e=t(this.getLinesOfSelection());if(!e instanceof Array)throw new Error(`Transformation must return an instance of Array, ${typeof e} returned.`);const n=e.length>1;let i=this.getLinesBeforeSelection().join("\n");const s=this.getLinesAfterSelection().join("\n");let a=e.join("\n");i.length>0&&a.length>0&&(i+="\n"),a.length>0&&s.length>0&&(a+="\n");const o=i+a+s,r=o.length-this.textarea.value.length,l=n?i.length:this.getAbsoluteSelectionStart()+r,d=n?l+a.length-1:this.getAbsoluteSelectionEnd()+r;this.updateTextareaContent(o,l,d)}maybeUpdatePreviewContent(){const t=this.preview_history[this.preview_history.length-1]??"",e=this.textarea.value;e!==t&&(this.preview_history.push(e),this.preview_renderer.getPreviewHtmlOf(e).then((t=>{this.content_wrappers.get(d).innerHTML=t})))}getBulletPointTransformation(){return u}getEnumerationTransformation(){return h}}function u(t){const e=[],n=!m(t[0]??"");for(const i of t)e.push(n?`- ${i}`:f(i));return e}function h(t,e=1){const n=[],i=!v(t[0]??"");for(const s of t)n.push(i?`${e++}. ${s}`:f(s));return n}function g(t,e){t.classList.contains(e)?t.classList.remove(e):t.classList.add(e)}function p(t){return t instanceof KeyboardEvent&&"Enter"===t.code}function f(t){return t.replace(/((^(\s*[-])|(^(\s*\d+\.)))\s*)/g,"")}function m(t){return(t.match(/^(\s*[-])/g)??[]).length>0}function v(t){return(t.match(/^(\s*\d+\.)/g)??[]).length>0}class w{instances=[];init(t,e,n){if(void 0!==this.instances[t])throw new Error(`Markdown with input-id '${t}' has already been initialized.`);this.instances[t]=new c(new r(n,e),t)}get(t){return this.instances[t]??null}}class y{constructor(t,e,n,i,s,a=null,o=null,r=null){this.id=t,this.name=e,this.element=n,this.selectButton=i,this.drilldownParentLevel=s,this.drilldownButton=a,this.listElement=o,this.renderUrl=r}}const b="data-node-id",T="data-node-name",S="data-render-url",x="data-ddindex",E="c-input-node",O="c-input-tree_select",D=`${E}__async`,C=`${E}__leaf`,I=`${E}--selected`,A="hidden",M="disabled",N=".glyph",_=`.${E}`,L=`.${O}`,k=`.${O}__selection`,P='[data-action="remove"]',B='[data-action="select"]',j=`.${E}__select`,V=".c-drilldown__menulevel--trigger";function F(t){return function(t){return t.classList.contains(D)}(t)&&t.hasAttribute(S)?t.getAttribute(S):null}function H(t){return!t.classList.contains(C)&&t.classList.contains(E)}function q(t,e=null){return t.reduce(((t,e)=>{const n=function(t){const e=t.getAttribute(b);if(null===e)throw new Error("Could not find data-node-id attribute.");return e}(e);if(t.has(n))throw new Error(`Node '${n}' has already been parsed. There might be a rendering issue.`);return t.set(n,new y(n,function(t){const e=t.querySelector(`[${T}]`);if(null===e)throw new Error("Could not find element with data-node-name attribute.");return e.textContent}(e),e,function(t){const e=t.querySelector(`:scope > ${j}`);if(null===e)throw new Error("Could not find node select button.");return e}(e),function(t){const e=t.closest(`ul[${x}]`);if(null===e)throw new Error("Could not find drilldown menu of node.");return e.getAttribute(x)}(e),function(t){if(!H(t))return null;const e=t.querySelector(`${V}`);if(null===e)throw new Error("Could not find drilldown menu button of branch node.");return e}(e),function(t){if(!H(t))return null;const e=t.querySelector("ul");if(null===e)throw new Error("Could not find list element of branch node.");return e}(e),F(e)))}),new Map(e??[]))}function R(t,e){for(let n=0;nn.shift()??""))}function U(t,e){t.classList.toggle(I,e)}class W{#t;#e=new Set;#n=new Set;#i=new Set;#s;#a;#o;#r;#l;#d;#c;#u;#h;#g;#p;#f;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g){this.#t=t,this.#s=n,this.#a=i,this.#o=s,this.#r=a,this.#l=o,this.#d=r,this.#c=l,this.#u=d,this.#h=c,this.#g=u,this.#p=h,this.#f=g,e.on(this.#p.ownerDocument,this.#r.getBackSignal(),(()=>{this.#m()})),this.#p.querySelectorAll('[data-action="close"]').forEach((t=>{t.addEventListener("click",(()=>{this.#v()}))})),this.#r.addEngageListener((t=>{this.#w(t)})),this.#g.addEventListener("click",(()=>{this.#y()})),this.#t.forEach((t=>{this.#b(t)})),this.#c.querySelectorAll("li").forEach((t=>{const e=function(t){const e=t.getAttribute(b);if(null===e)throw new Error(`Could not find '${b}' attribbute of element.`);return e}(t);this.#T(t,e),this.selectNode(e)})),this.#w(this.#r.getCurrentLevel()),this.#S()}unselectNode(t){if(this.#x(t),this.#S(),this.#E(t),this.#t.has(t)){const e=this.#t.get(t);U(e.element,!1),this.#O(e.selectButton,e.name)}this.#f(this)}selectNode(t){if(this.#D(t),this.#S(),this.#t.has(t)){const e=this.#t.get(t);U(e.element,!0),this.#C(e.selectButton,e.name),this.#I(e)}this.#f(this)}engageNode(t){if(!this.#t.has(t))return;const e=this.#t.get(t).drilldownParentLevel;this.#r.getCurrentLevel()!==e&&this.#r.getParentLevel()!==e&&this.#r.engageLevel(e)}getSelection(){return new Set(this.#e)}getNodes(){return new Map(this.#t)}async#A(t){var e,n,i;if(!this.#n.has(t.id)&&!this.#i.has(t.id))try{this.#i.add(t.id);const s=await this.#a.loadContent(t.renderUrl);t.listElement.append(...s.children),this.#r.parseLevels();const a=q((i=t.listElement,Array.from(i.querySelectorAll(_))),this.#t),o=(e=a,n=this.#t,Array.from(e.entries()).filter((([t])=>!n.has(t))).map((([,t])=>t)));this.#t=a,R(o,(t=>{this.#e.has(t.id)?this.selectNode(t.id):this.unselectNode(t.id),this.#b(t)})),this.#n.add(t.id)}catch(t){throw new Error(`Could not render async node children: ${t.message}`)}finally{this.#i.delete(t.id)}}#M(t){R(function(t,e,n=255){const i=[];let s=t;for(let t=0;t{const e=t.getAttribute(b);if(null===e||!this.#t.has(e))throw new Error(`Could not find '${b}' of node element.`);const n=this.#t.get(e);this.#N(n)}))}#N(t){const e=this.#s.createContent(this.#d).querySelector(".crumb");e.setAttribute(x,t.drilldownParentLevel),e.firstElementChild.textContent=t.name,e.addEventListener("click",(()=>{this.#r.engageLevel(t.drilldownParentLevel),t.drilldownButton.click()})),this.#l.append(e)}#m(){const t=this.#l.querySelectorAll(".crumb");t.item(t.length-1)?.remove()}#_(){R(this.#l.querySelectorAll(".crumb"),(t=>{t.remove()}))}#w(t){if("0"===t)return void this.#_();const e=this.#p.querySelector(`ul[${x}="${t}"]`)?.closest(_)?.getAttribute(b);if(null===e||!this.#t.has(e))throw new Error(`Could not find node for drilldown-level '${t}'.`);const n=this.#t.get(e);this.#_(),this.#M(n),null!==n.renderUrl&&this.#A(n)}#T(t,e){t.querySelector(P)?.addEventListener("click",(()=>{this.unselectNode(e),t.remove()}))}#L(t,e){t.addEventListener("click",(()=>{this.#e.has(e.id)?this.unselectNode(e.id):this.selectNode(e.id)}))}#I(t){if(null!==this.#c.querySelector(`li[${b}="${t.id}"]`))return;const e=this.#s.createContent(this.#u),n=e.querySelector("[data-node-id]");n.setAttribute(b,t.id),n.querySelector(`[${T}]`).textContent=t.name,n.querySelector("input").value=t.id,this.#T(n,t.id),this.#c.append(...e.children)}#E(t){this.#c.querySelector(`li[${b}="${t}"]`)?.remove()}#b(t){this.#L(t.selectButton,t)}#O(t,e){t.querySelector(P)?.classList.add(A),t.querySelector(B)?.classList.remove(A),t.setAttribute("aria-label",this.#k("select_node",e))}#C(t,e){t.querySelector(B)?.classList.add(A),t.querySelector(P)?.classList.remove(A),t.setAttribute("aria-label",this.#k("unselect_node",e))}#S(){this.#h.disabled=this.#e.size<=0}#x(t){this.#e.has(t)&&this.#e.delete(t)}#D(t){this.#e.has(t)||this.#e.add(t)}#k(t,...e){return $(this.#o.txt(t),e)}#v(){this.#p.close()}#y(){this.#p.showModal()}}function z(t,e){const n=t.createDocumentFragment();return n.append(...e),n}function K(t,e,n){t.querySelectorAll(`[${n}]`).forEach((t=>{const i=t.getAttribute(n);if(!e.has(i))throw new Error(`Element references '${i}' which does not exist.`);t.setAttribute(n,e.get(i))}))}class X{#P;constructor(t){this.#P=t}createContent(t){const e=t.content.cloneNode(!0),n=new Map;return e.querySelectorAll("[id]").forEach((t=>{const e=function(t=""){return`${t}${Date.now().toString(36)}_${Math.random().toString(36).substring(2)}`}("il_ui_fw_");n.set(t.id,e),t.id=e})),e.querySelectorAll("[for]").forEach((t=>{t.htmlFor=n.get(t.htmlFor)})),K(e,n,"aria-describedby"),K(e,n,"aria-labelledby"),K(e,n,"aria-controls"),K(e,n,"aria-owns"),z(this.#P,e.children)}}class J{#P;constructor(t){this.#P=t}loadContent(t){return fetch(t.toString()).then((t=>t.text())).then((t=>this.#B(t))).then((t=>z(this.#P,t))).catch((e=>{throw new Error(`Could not render element(s) from '${t}': ${e.message}`)}))}#j(t){const e=this.#P.createElement("script");return t.hasAttribute("type")&&e.setAttribute("type",t.getAttribute("type")),t.hasAttribute("src")&&e.setAttribute("src",t.getAttribute("src")),t.textContent.length>0&&(e.textContent=t.textContent),e}#B(t){const e=this.#P.createElement("div");return e.innerHTML=t.trim(),e.querySelectorAll("script").forEach((t=>{const e=this.#j(t);t.replaceWith(e)})),e.children}}function Q(t){return Array.from(t.querySelectorAll(_))}function G(){return t=>{!function(t){const e=t.getNodes(),n=t.getSelection();e.forEach(((t,e)=>{n.size>0?(t.selectButton.disabled=!n.has(e),t.selectButton.querySelector(N).classList.toggle(M,!n.has(e))):(t.selectButton.disabled=!1,t.selectButton.querySelector(N).classList.toggle(M,!1))}))}(t),function(t){const e=t.getSelection();if(1===e.size){const n=e.values()?.next()?.value;t.getNodes().has(n)&&t.engageNode(n)}}(t)}}function Y(t){return t?()=>{}:t=>{!function(t){const e=Array.from(t.getSelection()),n=t.getNodes();for(let s=0;s{t.selectButton.disabled=!1,t.selectButton.querySelector(N).classList.remove(M)})),n.forEach((t=>{const n=e.get(t);null!==n&&null!==n.listElement&&n.listElement.querySelectorAll(j).forEach((t=>{t.disabled=!0,t.querySelector(N).classList.add(M)}))}))}(t)}}class Z{#V=new Map;#F;#H;#o;#P;constructor(t,e,n,i){this.#F=t,this.#H=e,this.#o=n,this.#P=i}initTreeMultiSelect(t,e){if(this.#V.has(t))throw new Error(`TreeSelect '${t}' already exists.`);const[n,i,s,a,o,r,l,d]=this.#q(t),c=this.#R(i),u=new W(q(Q(l)),this.#F,new X(this.#P),new J(this.#P),this.#o,c,s,a,o,r,d,n,l,Y(e));return this.#V.set(t,u),u}initTreeSelect(t){if(this.#V.has(t))throw new Error(`TreeSelect '${t}' already exists.`);const[e,n,i,s,a,o,r,l]=this.#q(t),d=this.#R(n),c=new W(q(Q(r)),this.#F,new X(this.#P),new J(this.#P),this.#o,d,i,s,a,o,l,e,r,G());return this.#V.set(t,c),c}getInstance(t){return this.#V.has(t)?this.#V.get(t):null}#q(t){const e=this.#P.getElementById(t),n=e?.closest(L),i=n?.querySelector(".breadcrumb"),s=n?.querySelector(".modal-body > template"),a=n?.querySelector(k),o=a?.querySelector(":scope > template"),r=n?.querySelector("dialog"),l=r?.querySelector(".btn-primary");if(null===i||null===s||null===a||null===o||null===l||null===e||null===r)throw new Error(`Could not find some element(s) for Tree Select Input '${t}'.`);return[e,n,i,s,a,o,r,l]}#R(t){const e=t.querySelector(".c-drilldown");if(null===e||!e.hasAttribute("id"))throw new Error("Could not find drilldown element.");const n=this.#H.getInstance(e.id);if(null===e)throw new Error("Could not find drilldown instance.");return n}}class tt{#$;constructor(t){this.#$=t}on(t,e,n){this.#$(t).on(e,n)}off(t,e,n){this.#$(t).off(e,n)}} +!function(t,e,n){"use strict";class i{textarea;remainder=null;constructor(t){if(this.textarea=document.getElementById(t),null===this.textarea)throw new Error(`Could not find textarea for input-id '${t}'.`);if(this.shouldShowRemainder()){if(this.remainder=this.textarea.parentNode.querySelector('[data-action="remainder"]'),!this.remainder instanceof HTMLSpanElement)throw new Error(`Could not find remainder-element for input-id '${t}'.`);this.textarea.addEventListener("input",(()=>{this.updateRemainderCountHook()}))}}updateRemainderCountHook(){this.shouldShowRemainder()&&null!==this.remainder&&(this.remainder.innerHTML=(this.textarea.maxLength-this.textarea.value.length).toString())}updateTextareaContent(t,e=null,n=null){if(!this.isDisabled()){if(this.isContentTooLarge(t))return this.updateRemainderCountHook(),void this.textarea.focus();e=e??this.textarea.selectionStart,n=n??this.textarea.selectionEnd,this.textarea.value=t,ethis.textarea.selectionEnd?this.textarea.selectionStart:this.textarea.selectionEnd}getLinesBeforeSelection(){return a(this.textarea.value).slice(0,s(this.getTextBeforeSelection()))}getLinesAfterSelection(){const t=a(this.textarea.value);return t.slice(s(this.getTextBeforeSelection()+this.getTextOfSelection())+1,t.length)}getLinesOfSelection(){const t=a(this.textarea.value);return t.slice(this.getLinesBeforeSelection().length,t.length-this.getLinesAfterSelection().length)}isContentTooLarge(t){const e=this.getMaxLength();return!(e<0)&&e0}getMaxLength(){return Number(this.textarea.getAttribute("maxlength")??-1)}isDisabled(){return this.textarea.disabled}}function s(t){return(t.match(/\n/g)??[]).length}function a(t){return t.split(/\n/)}class o{instances=[];init(t){if(void 0!==this.instances[t])throw new Error(`Textarea with input-id '${t}' has already been initialized.`);this.instances[t]=new i(t)}get(t){return this.instances[t]??null}}class r{preview_parameter;preview_url;constructor(t,e){this.preview_parameter=t,this.preview_url=e}async getPreviewHtmlOf(t){if(0===t.length)return"";let e=new FormData;return e.append(this.preview_parameter,t),(await fetch(this.preview_url,{method:"POST",body:e})).text()}}const l="textarea",d="preview";class c extends i{preview_history=[];preview_renderer;content_wrappers;view_controls;actions;constructor(t,e){super(e);const n=this.textarea.closest(".c-field-markdown");if(null===n)throw new Error(`Could not find input-wrapper for input-id '${e}'.`);this.preview_renderer=t,this.content_wrappers=function(t){const e=new Map;return e.set(l,t.querySelector("textarea")),e.set(d,t.querySelector(".c-field-markdown__preview")),e.forEach((t=>{if(null===t)throw new Error("Could not find all content-wrappers for markdown-input.")})),e}(n),this.view_controls=function(t){const e=t.querySelector(".il-viewcontrol-mode")?.getElementsByTagName("button");if(!e instanceof HTMLCollection||2!==e.length)throw new Error("Could not find exactly two view-controls.");return[...e]}(n),this.actions=function(t){const e=t.querySelector(".c-field-markdown__actions")?.getElementsByTagName("button");if(e instanceof HTMLCollection)return[...e];return[]}(n);let i=!0;this.textarea.addEventListener("keydown",(t=>{i=this.handleEnterKeyBeforeInsertionHook(t)})),this.textarea.addEventListener("keyup",(t=>{this.handleEnterKeyAfterInsertionHook(t,i)})),this.actions.forEach((t=>{t.addEventListener("click",(t=>{this.performMarkdownActionHook(t)}))})),this.view_controls.forEach((t=>{t.addEventListener("click",(()=>{this.toggleViewingModeHook()}))}))}handleEnterKeyAfterInsertionHook(t,e){if(!e||!p(t))return;const n=this.getLinesBeforeSelection().pop();void 0!==n&&m(n)?this.applyTransformationToSelection(u):void 0!==n&&v(n)&&this.insertSingleEnumeration()}handleEnterKeyBeforeInsertionHook(t){if(!p(t))return!1;const e=this.getLinesOfSelection().shift();if(void 0===e||!((e.match(/((^(\s*-)|(^(\s*\d+\.)))\s*)$/g)??[]).length>0))return!0;let n=this.getLinesBeforeSelection().join("\n"),i=this.getLinesAfterSelection().join("\n");return n.length>0&&(n+="\n"),i.length>0&&(i=`\n${i}`),this.updateTextareaContent(n+i,this.getAbsoluteSelectionStart()-e.length,this.getAbsoluteSelectionEnd()-e.length),t.preventDefault(),!1}performMarkdownActionHook(t){const e=function(t){const e=t.closest("span[data-action]");if(!e instanceof HTMLSpanElement)return null;if(!e.hasAttribute("data-action"))return null;return e.dataset.action}(t.target);switch(e){case"insert-heading":this.insertCharactersAroundSelection("# ","");break;case"insert-link":this.insertCharactersAroundSelection("[","](url)");break;case"insert-bold":this.insertCharactersAroundSelection("**","**");break;case"insert-italic":this.insertCharactersAroundSelection("_","_");break;case"insert-bullet-points":this.applyTransformationToSelection(u);break;case"insert-enumeration":this.isMultilineTextSelected()?this.applyTransformationToSelection(h):this.insertSingleEnumeration();break;default:throw new Error(`Could not perform markdown-action '${e}'.`)}}toggleViewingModeHook(){this.content_wrappers.forEach((t=>{g(t,"hidden")})),this.view_controls.forEach((t=>{g(t,"engaged")})),this.isDisabled()||this.actions.forEach((t=>{t.disabled=!t.disabled;const e=t.querySelector(".glyph");null!==e&&g(e,"disabled")})),this.maybeUpdatePreviewContent()}insertSingleEnumeration(){const t=this.getLinesOfSelection();if(1!==t.length)return void this.textarea.focus();const e=this.getLinesBeforeSelection(),n=e.length-1;let i=n>=0?function(t){const e=t.match(/([0-9]+)/);if(null!==e)return parseInt(e[0]);return null}(e[n])??0:0;const s=h(t,++i),a=function(t,e=0){if(t.length<1)return[];const n=[];for(const i of t){if(!v(i))break;n.push(i.replace(/([0-9]+)/,(++e).toString()))}n.length>0&&(t=n.concat(t.slice(n.length)));return t}(this.getLinesAfterSelection(),i);let o=e.join("\n");const r=a.join("\n");let l=s.join("\n");o.length>0&&l.length>0&&(o+="\n"),l.length>0&&r.length>0&&(l+="\n");const d=o+l+r,c=d.length-this.textarea.value.length;this.updateTextareaContent(d,this.getAbsoluteSelectionStart()+c,this.getAbsoluteSelectionEnd()+c)}applyTransformationToSelection(t){if(!t instanceof Function)throw new Error(`Transformation must be an instance of Function, ${typeof t} given.`);const e=t(this.getLinesOfSelection());if(!e instanceof Array)throw new Error(`Transformation must return an instance of Array, ${typeof e} returned.`);const n=e.length>1;let i=this.getLinesBeforeSelection().join("\n");const s=this.getLinesAfterSelection().join("\n");let a=e.join("\n");i.length>0&&a.length>0&&(i+="\n"),a.length>0&&s.length>0&&(a+="\n");const o=i+a+s,r=o.length-this.textarea.value.length,l=n?i.length:this.getAbsoluteSelectionStart()+r,d=n?l+a.length-1:this.getAbsoluteSelectionEnd()+r;this.updateTextareaContent(o,l,d)}maybeUpdatePreviewContent(){const t=this.preview_history[this.preview_history.length-1]??"",e=this.textarea.value;e!==t&&(this.preview_history.push(e),this.preview_renderer.getPreviewHtmlOf(e).then((t=>{this.content_wrappers.get(d).innerHTML=t})))}getBulletPointTransformation(){return u}getEnumerationTransformation(){return h}}function u(t){const e=[],n=!m(t[0]??"");for(const i of t)e.push(n?`- ${i}`:f(i));return e}function h(t,e=1){const n=[],i=!v(t[0]??"");for(const s of t)n.push(i?`${e++}. ${s}`:f(s));return n}function g(t,e){t.classList.contains(e)?t.classList.remove(e):t.classList.add(e)}function p(t){return t instanceof KeyboardEvent&&"Enter"===t.code}function f(t){return t.replace(/((^(\s*[-])|(^(\s*\d+\.)))\s*)/g,"")}function m(t){return(t.match(/^(\s*[-])/g)??[]).length>0}function v(t){return(t.match(/^(\s*\d+\.)/g)??[]).length>0}class y{instances=[];init(t,e,n){if(void 0!==this.instances[t])throw new Error(`Markdown with input-id '${t}' has already been initialized.`);this.instances[t]=new c(new r(n,e),t)}get(t){return this.instances[t]??null}}class w{constructor(t,e,n,i,s,a=null,o=null,r=null){this.id=t,this.name=e,this.element=n,this.selectButton=i,this.drilldownParentLevel=s,this.drilldownButton=a,this.listElement=o,this.renderUrl=r}}const b="data-node-id",T="data-node-name",S="data-render-url",E="data-ddindex",x="c-input-node",O="c-input-tree_select",D=`${x}__async`,A=`${x}__leaf`,C=`${x}--selected`,I="hidden",M="disabled",_=".glyph",N=`.${x}`,L=`.${O}`,k=`.${O}__selection`,P='[data-action="remove"]',B='[data-action="select"]',j=`.${x}__select`,V=".c-drilldown__menulevel--trigger";function F(t){return function(t){return t.classList.contains(D)}(t)&&t.hasAttribute(S)?t.getAttribute(S):null}function q(t){return!t.classList.contains(A)&&t.classList.contains(x)}function H(t,e=null){return t.reduce(((t,e)=>{const n=function(t){const e=t.getAttribute(b);if(null===e)throw new Error("Could not find data-node-id attribute.");return e}(e);if(t.has(n))throw new Error(`Node '${n}' has already been parsed. There might be a rendering issue.`);return t.set(n,new w(n,function(t){const e=t.querySelector(`[${T}]`);if(null===e)throw new Error("Could not find element with data-node-name attribute.");return e.textContent}(e),e,function(t){const e=t.querySelector(`:scope > ${j}`);if(null===e)throw new Error("Could not find node select button.");return e}(e),function(t){const e=t.closest(`ul[${E}]`);if(null===e)throw new Error("Could not find drilldown menu of node.");return e.getAttribute(E)}(e),function(t){if(!q(t))return null;const e=t.querySelector(`${V}`);if(null===e)throw new Error("Could not find drilldown menu button of branch node.");return e}(e),function(t){if(!q(t))return null;const e=t.querySelector("ul");if(null===e)throw new Error("Could not find list element of branch node.");return e}(e),F(e)))}),new Map(e??[]))}function R(t,e){for(let n=0;nn.shift()??""))}function U(t,e){t.classList.toggle(C,e)}class W{#t;#e=new Set;#n=new Set;#i=new Set;#s;#a;#o;#r;#l;#d;#c;#u;#h;#g;#p;#f;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g){this.#t=t,this.#s=n,this.#a=i,this.#o=s,this.#r=a,this.#l=o,this.#d=r,this.#c=l,this.#u=d,this.#h=c,this.#g=u,this.#p=h,this.#f=g,e.on(this.#p.ownerDocument,this.#r.getBackSignal(),(()=>{this.#m()})),this.#p.querySelectorAll('[data-action="close"]').forEach((t=>{t.addEventListener("click",(()=>{this.#v()}))})),this.#r.addEngageListener((t=>{this.#y(t)})),this.#g.addEventListener("click",(()=>{this.#w()})),this.#t.forEach((t=>{this.#b(t)})),this.#c.querySelectorAll("li").forEach((t=>{const e=function(t){const e=t.getAttribute(b);if(null===e)throw new Error(`Could not find '${b}' attribbute of element.`);return e}(t);this.#T(t,e),this.selectNode(e)})),this.#y(this.#r.getCurrentLevel()),this.#S()}unselectNode(t){if(this.#E(t),this.#S(),this.#x(t),this.#t.has(t)){const e=this.#t.get(t);U(e.element,!1),this.#O(e.selectButton,e.name)}this.#f(this)}selectNode(t){if(this.#D(t),this.#S(),this.#t.has(t)){const e=this.#t.get(t);U(e.element,!0),this.#A(e.selectButton,e.name),this.#C(e)}this.#f(this)}engageNode(t){if(!this.#t.has(t))return;const e=this.#t.get(t).drilldownParentLevel;this.#r.getCurrentLevel()!==e&&this.#r.getParentLevel()!==e&&this.#r.engageLevel(e)}getSelection(){return new Set(this.#e)}getNodes(){return new Map(this.#t)}async#I(t){var e,n,i;if(!this.#n.has(t.id)&&!this.#i.has(t.id))try{this.#i.add(t.id);const s=await this.#a.loadContent(t.renderUrl);t.listElement.append(...s.children),this.#r.parseLevels();const a=H((i=t.listElement,Array.from(i.querySelectorAll(N))),this.#t),o=(e=a,n=this.#t,Array.from(e.entries()).filter((([t])=>!n.has(t))).map((([,t])=>t)));this.#t=a,R(o,(t=>{this.#e.has(t.id)?this.selectNode(t.id):this.unselectNode(t.id),this.#b(t)})),this.#n.add(t.id)}catch(t){throw new Error(`Could not render async node children: ${t.message}`)}finally{this.#i.delete(t.id)}}#M(t){R(function(t,e,n=255){const i=[];let s=t;for(let t=0;t{const e=t.getAttribute(b);if(null===e||!this.#t.has(e))throw new Error(`Could not find '${b}' of node element.`);const n=this.#t.get(e);this.#_(n)}))}#_(t){const e=this.#s.createContent(this.#d).querySelector(".crumb");e.setAttribute(E,t.drilldownParentLevel),e.firstElementChild.textContent=t.name,e.addEventListener("click",(()=>{this.#r.engageLevel(t.drilldownParentLevel),t.drilldownButton.click()})),this.#l.append(e)}#m(){const t=this.#l.querySelectorAll(".crumb");t.item(t.length-1)?.remove()}#N(){R(this.#l.querySelectorAll(".crumb"),(t=>{t.remove()}))}#y(t){if("0"===t)return void this.#N();const e=this.#p.querySelector(`ul[${E}="${t}"]`)?.closest(N)?.getAttribute(b);if(null===e||!this.#t.has(e))throw new Error(`Could not find node for drilldown-level '${t}'.`);const n=this.#t.get(e);this.#N(),this.#M(n),null!==n.renderUrl&&this.#I(n)}#T(t,e){t.querySelector(P)?.addEventListener("click",(()=>{this.unselectNode(e),t.remove()}))}#L(t,e){t.addEventListener("click",(()=>{this.#e.has(e.id)?this.unselectNode(e.id):this.selectNode(e.id)}))}#C(t){if(null!==this.#c.querySelector(`li[${b}="${t.id}"]`))return;const e=this.#s.createContent(this.#u),n=e.querySelector("[data-node-id]");n.setAttribute(b,t.id),n.querySelector(`[${T}]`).textContent=t.name,n.querySelector("input").value=t.id,this.#T(n,t.id),this.#c.append(...e.children)}#x(t){this.#c.querySelector(`li[${b}="${t}"]`)?.remove()}#b(t){this.#L(t.selectButton,t)}#O(t,e){t.querySelector(P)?.classList.add(I),t.querySelector(B)?.classList.remove(I),t.setAttribute("aria-label",this.#k("select_node",e))}#A(t,e){t.querySelector(B)?.classList.add(I),t.querySelector(P)?.classList.remove(I),t.setAttribute("aria-label",this.#k("unselect_node",e))}#S(){this.#h.disabled=this.#e.size<=0}#E(t){this.#e.has(t)&&this.#e.delete(t)}#D(t){this.#e.has(t)||this.#e.add(t)}#k(t,...e){return $(this.#o.txt(t),e)}#v(){this.#p.close()}#w(){this.#p.showModal()}}function z(t,e){const n=t.createDocumentFragment();return n.append(...e),n}function K(t,e,n){t.querySelectorAll(`[${n}]`).forEach((t=>{const i=t.getAttribute(n);if(!e.has(i))throw new Error(`Element references '${i}' which does not exist.`);t.setAttribute(n,e.get(i))}))}class X{#P;constructor(t){this.#P=t}createContent(t){const e=t.content.cloneNode(!0),n=new Map;return e.querySelectorAll("[id]").forEach((t=>{const e=function(t=""){return`${t}${Date.now().toString(36)}_${Math.random().toString(36).substring(2)}`}("il_ui_fw_");n.set(t.id,e),t.id=e})),e.querySelectorAll("[for]").forEach((t=>{t.htmlFor=n.get(t.htmlFor)})),K(e,n,"aria-describedby"),K(e,n,"aria-labelledby"),K(e,n,"aria-controls"),K(e,n,"aria-owns"),z(this.#P,e.children)}}class J{#P;constructor(t){this.#P=t}loadContent(t){return fetch(t.toString()).then((t=>t.text())).then((t=>this.#B(t))).then((t=>z(this.#P,t))).catch((e=>{throw new Error(`Could not render element(s) from '${t}': ${e.message}`)}))}#j(t){const e=this.#P.createElement("script");return t.hasAttribute("type")&&e.setAttribute("type",t.getAttribute("type")),t.hasAttribute("src")&&e.setAttribute("src",t.getAttribute("src")),t.textContent.length>0&&(e.textContent=t.textContent),e}#B(t){const e=this.#P.createElement("div");return e.innerHTML=t.trim(),e.querySelectorAll("script").forEach((t=>{const e=this.#j(t);t.replaceWith(e)})),e.children}}function Q(t){return Array.from(t.querySelectorAll(N))}function G(){return t=>{!function(t){const e=t.getNodes(),n=t.getSelection();e.forEach(((t,e)=>{n.size>0?(t.selectButton.disabled=!n.has(e),t.selectButton.querySelector(_).classList.toggle(M,!n.has(e))):(t.selectButton.disabled=!1,t.selectButton.querySelector(_).classList.toggle(M,!1))}))}(t),function(t){const e=t.getSelection();if(1===e.size){const n=e.values()?.next()?.value;t.getNodes().has(n)&&t.engageNode(n)}}(t)}}function Y(t){return t?()=>{}:t=>{!function(t){const e=Array.from(t.getSelection()),n=t.getNodes();for(let s=0;s{t.selectButton.disabled=!1,t.selectButton.querySelector(_).classList.remove(M)})),n.forEach((t=>{const n=e.get(t);null!==n&&null!==n.listElement&&n.listElement.querySelectorAll(j).forEach((t=>{t.disabled=!0,t.querySelector(_).classList.add(M)}))}))}(t)}}class Z{#V=new Map;#F;#q;#o;#P;constructor(t,e,n,i){this.#F=t,this.#q=e,this.#o=n,this.#P=i}initTreeMultiSelect(t,e){if(this.#V.has(t))throw new Error(`TreeSelect '${t}' already exists.`);const[n,i,s,a,o,r,l,d]=this.#H(t),c=this.#R(i),u=new W(H(Q(l)),this.#F,new X(this.#P),new J(this.#P),this.#o,c,s,a,o,r,d,n,l,Y(e));return this.#V.set(t,u),u}initTreeSelect(t){if(this.#V.has(t))throw new Error(`TreeSelect '${t}' already exists.`);const[e,n,i,s,a,o,r,l]=this.#H(t),d=this.#R(n),c=new W(H(Q(r)),this.#F,new X(this.#P),new J(this.#P),this.#o,d,i,s,a,o,l,e,r,G());return this.#V.set(t,c),c}getInstance(t){return this.#V.has(t)?this.#V.get(t):null}#H(t){const e=this.#P.getElementById(t),n=e?.closest(L),i=n?.querySelector(".breadcrumb"),s=n?.querySelector(".modal-body > template"),a=n?.querySelector(k),o=a?.querySelector(":scope > template"),r=n?.querySelector("dialog"),l=r?.querySelector(".btn-primary");if(null===i||null===s||null===a||null===o||null===l||null===e||null===r)throw new Error(`Could not find some element(s) for Tree Select Input '${t}'.`);return[e,n,i,s,a,o,r,l]}#R(t){const e=t.querySelector(".c-drilldown");if(null===e||!e.hasAttribute("id"))throw new Error("Could not find drilldown element.");const n=this.#q.getInstance(e.id);if(null===e)throw new Error("Could not find drilldown instance.");return n}}class tt{#$;constructor(t){this.#$=t}on(t,e,n){this.#$(t).on(e,n)}off(t,e,n){this.#$(t).off(e,n)}} /* Tagify v4.33.2 - tags input component By: Yair Even-Or @@ -38,4 +38,4 @@ This Software may not be rebranded and sold as a library under any other name other than "Tagify" (by owner) or as part of another library. - */var et="​";function nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n/g,">").replace(/"/g,""").replace(/`|'/g,"'"):t}function ut(t){var e=Object.prototype.toString.call(t).split(" ")[1].slice(0,-1);return t===Object(t)&&"Array"!=e&&"Function"!=e&&"RegExp"!=e&&"HTMLUnknownElement"!=e}function ht(t,e,n){var i,s;function a(t,e){for(var n in e)if(e.hasOwnProperty(n)){if(ut(e[n])){ut(t[n])?a(t[n],e[n]):t[n]=Object.assign({},e[n]);continue}if(Array.isArray(e[n])){t[n]=Object.assign([],e[n]);continue}t[n]=e[n]}}return i=t,(null!=(s=Object)&&"undefined"!=typeof Symbol&&s[Symbol.hasInstance]?s[Symbol.hasInstance](i):i instanceof s)||(t={}),a(t,e),n&&a(t,n),t}function gt(){var t=[],e={},n=!0,i=!1,s=void 0;try{for(var a,o=arguments[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var r=a.value,l=!0,d=!1,c=void 0;try{for(var u,h=r[Symbol.iterator]();!(l=(u=h.next()).done);l=!0){var g=u.value;ut(g)?e[g.value]||(t.push(g),e[g.value]=1):t.includes(g)||t.push(g)}}catch(t){d=!0,c=t}finally{try{l||null==h.return||h.return()}finally{if(d)throw c}}}}catch(t){i=!0,s=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw s}}return t}function pt(t){return String.prototype.normalize?"string"==typeof t?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):void 0:t}var ft=function(){return/(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function vt(t){var e;return yt.call(this,t)&&(null==t||null===(e=t.classList)||void 0===e?void 0:e.contains(this.settings.classNames.tag))}function wt(t){return yt.call(this,t)&&(null==t?void 0:t.closest(this.settings.classNames.tagSelector))}function yt(t){var e;return(null==t||null===(e=t.closest)||void 0===e?void 0:e.call(t,this.settings.classNames.namespaceSelector))===this.DOM.scope}function bt(t,e){var n=window.getSelection();return e=e||n.getRangeAt(0),"string"==typeof t&&(t=document.createTextNode(t)),e&&(e.deleteContents(),e.insertNode(t)),t}function Tt(t,e,n){return t?(e&&(t.__tagifyTagData=n?e:ht({},t.__tagifyTagData||{},e)),t.__tagifyTagData):(st.warn("tag element doesn't exist",{tagElm:t,data:e}),e)}function St(t){if(t&&t.parentNode){var e=t,n=window.getSelection(),i=n.getRangeAt(0);n.rangeCount&&(i.setStartAfter(e),i.collapse(!0),n.removeAllRanges(),n.addRange(i))}}function xt(t,e){t.forEach((function(t){if(Tt(t.previousSibling)||!t.previousSibling){var n=document.createTextNode("​");t.before(n),e&&St(n)}}))}var Et={delimiters:",",pattern:null,tagTextProp:"value",maxTags:1/0,callbacks:{},addTagOnBlur:!0,addTagOn:["blur","tab","enter"],onChangeAfterBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,userInput:!0,focusable:!0,keepInvalidTags:!1,createInvalidTags:!0,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,pasteAsTags:!0,editTags:{clicks:2,keepInvalid:!0},transformTag:function(){},trim:!0,a11y:{focusableTags:!1},mixMode:{insertAfterTag:" "},autoComplete:{enabled:!0,rightKey:!1,tabKey:!1},classNames:{namespace:"tagify",mixMode:"tagify--mix",selectMode:"tagify--select",input:"tagify__input",focus:"tagify--focus",tagNoAnimation:"tagify--noAnim",tagInvalid:"tagify--invalid",tagNotAllowed:"tagify--notAllowed",scopeLoading:"tagify--loading",hasMaxTags:"tagify--hasMaxTags",hasNoTags:"tagify--noTags",empty:"tagify--empty",inputInvalid:"tagify__input--invalid",dropdown:"tagify__dropdown",dropdownWrapper:"tagify__dropdown__wrapper",dropdownHeader:"tagify__dropdown__header",dropdownFooter:"tagify__dropdown__footer",dropdownItem:"tagify__dropdown__item",dropdownItemActive:"tagify__dropdown__item--active",dropdownItemHidden:"tagify__dropdown__item--hidden",dropdownItemSelected:"tagify__dropdown__item--selected",dropdownInital:"tagify__dropdown--initial",tag:"tagify__tag",tagText:"tagify__tag-text",tagX:"tagify__tag__removeBtn",tagLoading:"tagify__tag--loading",tagEditing:"tagify__tag--editable",tagFlash:"tagify__tag--flash",tagHide:"tagify__tag--hide"},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:["value","searchBy"],fuzzySearch:!0,caseSensitive:!1,accentedSearch:!0,includeSelectedTags:!1,escapeHTML:!0,highlightFirst:!0,closeOnSelect:!0,clearOnSelect:!0,position:"all",appendTarget:null},hooks:{beforeRemoveTag:function(){return Promise.resolve()},beforePaste:function(){return Promise.resolve()},suggestionClick:function(){return Promise.resolve()},beforeKeyDown:function(){return Promise.resolve()}}};function Ot(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],e=this.dropdown.events.callbacks,n=this.listeners.dropdown=this.listeners.dropdown||{position:this.dropdown.position.bind(this,null),onKeyDown:e.onKeyDown.bind(this),onMouseOver:e.onMouseOver.bind(this),onMouseLeave:e.onMouseLeave.bind(this),onClick:e.onClick.bind(this),onScroll:e.onScroll.bind(this)},i=t?"addEventListener":"removeEventListener";"manual"!=this.settings.dropdown.position&&(document[i]("scroll",n.position,!0),window[i]("resize",n.position),window[i]("keydown",n.onKeyDown)),this.DOM.dropdown[i]("mouseover",n.onMouseOver),this.DOM.dropdown[i]("mouseleave",n.onMouseLeave),this.DOM.dropdown[i]("mousedown",n.onClick),this.DOM.dropdown.content[i]("scroll",n.onScroll)},callbacks:{onKeyDown:function(t){var e=this;if(this.state.hasFocus&&!this.state.composing){var n=this.settings,i=n.dropdown.includeSelectedTags,s=this.DOM.dropdown.querySelector(n.classNames.dropdownItemActiveSelector),a=this.dropdown.getSuggestionDataByNode(s),o="mix"==n.mode,r="select"==n.mode;n.hooks.beforeKeyDown(t,{tagify:this}).then((function(l){switch(t.key){case"ArrowDown":case"ArrowUp":case"Down":case"Up":t.preventDefault();var d=e.dropdown.getAllSuggestionsRefs(),c="ArrowUp"==t.key||"Up"==t.key;s&&(s=e.dropdown.getNextOrPrevOption(s,!c)),s&&s.matches(n.classNames.dropdownItemSelector)||(s=d[c?d.length-1:0]),e.dropdown.highlightOption(s,!0);break;case"PageUp":case"PageDown":var u;t.preventDefault();var h=e.dropdown.getAllSuggestionsRefs(),g=Math.floor(e.DOM.dropdown.content.clientHeight/(null===(u=h[0])||void 0===u?void 0:u.offsetHeight))||1,p="PageUp"===t.key;if(s){var f=h.indexOf(s),m=p?Math.max(0,f-g):Math.min(h.length-1,f+g);s=h[m]}else s=h[0];e.dropdown.highlightOption(s,!0);break;case"Home":case"End":t.preventDefault();var v=e.dropdown.getAllSuggestionsRefs();s=v["Home"===t.key?0:v.length-1],e.dropdown.highlightOption(s,!0);break;case"Escape":case"Esc":e.dropdown.hide();break;case"ArrowRight":if(e.state.actions.ArrowLeft||n.autoComplete.rightKey)return;case"Tab":var w=!n.autoComplete.rightKey||!n.autoComplete.tabKey;if(!o&&!r&&s&&w&&!e.state.editing&&a){t.preventDefault();var y=e.dropdown.getMappedValue(a);return e.state.autoCompleteData=a,e.input.autocomplete.set.call(e,y),!1}return!0;case"Enter":t.preventDefault(),e.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),n.hooks.suggestionClick(t,{tagify:e,tagData:a,suggestionElm:s}).then((function(){if(s){var n=i?s:e.dropdown.getNextOrPrevOption(s,!c);e.dropdown.selectOption(s,t,(function(){if(n){var t=n.getAttribute("value");n=e.dropdown.getSuggestionNodeByValue(t),e.dropdown.highlightOption(n)}}))}else e.dropdown.hide(),o||e.addTags(e.state.inputText.trim(),!0)})).catch((function(t){return st.warn(t)}));break;case"Backspace":if(o||e.state.editing.scope)return;var b=e.input.raw.call(e);""!=b&&8203!=b.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0))}}))}},onMouseOver:function(t){var e=t.target.closest(this.settings.classNames.dropdownItemSelector);this.dropdown.highlightOption(e)},onMouseLeave:function(t){this.dropdown.highlightOption()},onClick:function(t){var e=this;if(0==t.button&&t.target!=this.DOM.dropdown&&t.target!=this.DOM.dropdown.content){var n=t.target.closest(this.settings.classNames.dropdownItemSelector),i=this.dropdown.getSuggestionDataByNode(n);this.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),this.settings.hooks.suggestionClick(t,{tagify:this,tagData:i,suggestionElm:n}).then((function(){n?e.dropdown.selectOption(n,t):e.dropdown.hide()})).catch((function(t){return st.warn(t)}))}},onScroll:function(t){var e=t.target,n=e.scrollTop/(e.scrollHeight-e.parentNode.clientHeight)*100;this.trigger("dropdown:scroll",{percentage:Math.round(n)})}}},refilter:function(t){t=t||this.state.dropdown.query||"",this.suggestedListItems=this.dropdown.filterListItems(t),this.dropdown.fill(),this.suggestedListItems.length||this.dropdown.hide(),this.trigger("dropdown:updated",this.DOM.dropdown)},getSuggestionDataByNode:function(t){for(var e,n=t&&t.getAttribute("value"),i=this.suggestedListItems.length;i--;){if(ut(e=this.suggestedListItems[i])&&e.value==n)return e;if(e==n)return{value:e}}},getSuggestionNodeByValue:function(t){return this.dropdown.getAllSuggestionsRefs().find((function(e){return e.getAttribute("value")===t}))},getNextOrPrevOption:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.dropdown.getAllSuggestionsRefs(),i=n.findIndex((function(e){return e===t}));return e?n[i+1]:n[i-1]},highlightOption:function(t,e){var n,i=this.settings.classNames.dropdownItemActive;if(this.state.ddItemElm&&(this.state.ddItemElm.classList.remove(i),this.state.ddItemElm.removeAttribute("aria-selected")),!t)return this.state.ddItemData=null,this.state.ddItemElm=null,void this.input.autocomplete.suggest.call(this);n=this.dropdown.getSuggestionDataByNode(t),this.state.ddItemData=n,this.state.ddItemElm=t,t.classList.add(i),t.setAttribute("aria-selected",!0),e&&(t.parentNode.scrollTop=t.clientHeight+t.offsetTop-t.parentNode.clientHeight),this.settings.autoComplete&&(this.input.autocomplete.suggest.call(this,n),this.dropdown.position())},selectOption:function(t,e,n){var i=this,s=this.settings,a=s.dropdown.includeSelectedTags,o=s.dropdown,r=o.clearOnSelect,l=o.closeOnSelect;if(!t)return this.addTags(this.state.inputText,!0),void(l&&this.dropdown.hide());e=e||{};var d=t.getAttribute("value"),c="noMatch"==d,u="mix"==s.mode,h=this.suggestedListItems.find((function(t){var e;return(null!==(e=t.value)&&void 0!==e?e:t)==d}));if(this.trigger("dropdown:select",{data:h,elm:t,event:e}),h||c){if(this.state.editing){var g=this.normalizeTags([h])[0];h=s.transformTag.call(this,g)||g,this.onEditTagDone(null,ht({__isValid:!0},h))}else this[u?"addMixTags":"addTags"]([h||this.input.raw.call(this)],r);(u||this.DOM.input.parentNode)&&(setTimeout((function(){i.DOM.input.focus(),i.toggleFocusClass(!0)})),l&&setTimeout(this.dropdown.hide.bind(this)),a?n&&n():(t.addEventListener("transitionend",(function(){i.dropdown.fillHeaderFooter(),setTimeout((function(){t.remove(),i.dropdown.refilter(),n&&n()}),100)}),{once:!0}),t.classList.add(this.settings.classNames.dropdownItemHidden)))}else l&&setTimeout(this.dropdown.hide.bind(this))},selectAll:function(t){this.suggestedListItems.length=0,this.dropdown.hide(),this.dropdown.filterListItems("");var e=this.dropdown.filterListItems("");return t||(e=this.state.dropdown.suggestions),this.addTags(e,!0),this},filterListItems:function(t,e){var n,i,s,a,o,r,l=function(){var t,l,d=void 0,c=void 0;t=p[y],i=(null!=(l=Object)&&"undefined"!=typeof Symbol&&l[Symbol.hasInstance]?l[Symbol.hasInstance](t):t instanceof l)?p[y]:{value:p[y]};var f,m=Object.keys(i).some((function(t){return w.includes(t)}))?w:["value"];u.fuzzySearch&&!e.exact?(a=m.reduce((function(t,e){return t+" "+(i[e]||"")}),"").toLowerCase().trim(),u.accentedSearch&&(a=pt(a),r=pt(r)),d=0==a.indexOf(r),c=a===r,f=a,s=r.toLowerCase().split(" ").every((function(t){return f.includes(t.toLowerCase())}))):(d=!0,s=m.some((function(t){var n=""+(i[t]||"");return u.accentedSearch&&(n=pt(n),r=pt(r)),u.caseSensitive||(n=n.toLowerCase()),c=n===r,e.exact?n===r:0==n.indexOf(r)}))),o=!u.includeSelectedTags&&n.isTagDuplicate(ut(i)?i.value:i),s&&!o&&(c&&d?g.push(i):"startsWith"==u.sortby&&d?h.unshift(i):h.push(i))},d=this,c=this.settings,u=c.dropdown,h=(e=e||{},[]),g=[],p=c.whitelist,f=u.maxItems>=0?u.maxItems:1/0,m=u.includeSelectedTags,v="function"==typeof u.sortby,w=u.searchKeys,y=0;if(!(t="select"==c.mode&&this.value.length&&this.value[0][c.tagTextProp]==t?"":t)||!w.length){h=m?p:p.filter((function(t){return!d.isTagDuplicate(ut(t)?t.value:t)}));var b=v?u.sortby(h,r):h.slice(0,f);return this.state.dropdown.suggestions=b,b}for(r=u.caseSensitive?""+t:(""+t).toLowerCase();y[\r\n ]+\<").split(/>\s+<").trim():""},fillHeaderFooter:function(){var t=this.dropdown.filterListItems(this.state.dropdown.query),e=this.parseTemplate("dropdownHeader",[t]),n=this.parseTemplate("dropdownFooter",[t]),i=this.dropdown.getHeaderRef(),s=this.dropdown.getFooterRef();e&&(null==i||i.parentNode.replaceChild(e,i)),n&&(null==s||s.parentNode.replaceChild(n,s))},position:function(t){var e=this.settings.dropdown,n=this.dropdown.getAppendTarget();if("manual"!=e.position&&n){var i,s,a,o,r,l,d,c,u,h,g=this.DOM.dropdown,p=e.RTL,f=n===document.body,m=n===this.DOM.scope,v=f?window.pageYOffset:n.scrollTop,w=document.fullscreenElement||document.webkitFullscreenElement||document.documentElement,y=w.clientHeight,b=Math.max(w.clientWidth||0,window.innerWidth||0),T=b>480?e.position:"all",S=this.DOM["input"==T?"input":"scope"];if(t=t||g.clientHeight,this.state.dropdown.visible){if("text"==T?(a=(i=function(){var t=document.getSelection();if(t.rangeCount){var e,n,i=t.getRangeAt(0),s=i.startContainer,a=i.startOffset;if(a>0)return(n=document.createRange()).setStart(s,a-1),n.setEnd(s,a),{left:(e=n.getBoundingClientRect()).right,top:e.top,bottom:e.bottom};if(s.getBoundingClientRect)return s.getBoundingClientRect()}return{left:-9999,top:-9999}}()).bottom,s=i.top,o=i.left,r="auto"):(l=function(t){var e=0,n=0;for(t=t.parentNode;t&&t!=w;)e+=t.offsetTop||0,n+=t.offsetLeft||0,t=t.parentNode;return{top:e,left:n}}(n),i=S.getBoundingClientRect(),s=m?-1:i.top-l.top,a=(m?i.height:i.bottom-l.top)-1,o=m?-1:i.left-l.left,r=i.width+"px"),!f){var x=function(){for(var t=0,n=e.appendTarget.parentNode;n;)t+=n.scrollTop||0,n=n.parentNode;return t}();s+=x,a+=x}var E;s=Math.floor(s),a=Math.ceil(a),c=b-o<120,u=((d=null!==(E=e.placeAbove)&&void 0!==E?E:y-i.bottom\n ').concat(this.settings.templates.input.call(this),"\n ").concat(et,"\n ")},input:function(){var t=this.settings,e=t.placeholder||et;return"')},tag:function(t,e){var n=e.settings;return'\n \n
\n ').concat(t[n.tagTextProp]||t.value,"\n
\n
")},dropdown:function(t){var e=t.dropdown,n="manual"==e.position;return'
\n
\n
')},dropdownContent:function(t){var e=this.settings.templates,n=this.state.dropdown.suggestions;return"\n ".concat(e.dropdownHeader.call(this,n),"\n ").concat(t,"\n ").concat(e.dropdownFooter.call(this,n),"\n ")},dropdownItem:function(t){return"
').concat(t.mappedValue||t.value,"
")},dropdownHeader:function(t){return"
')},dropdownFooter:function(t){var e=t.length-this.settings.dropdown.maxItems;return e>0?"
\n ').concat(e," more items. Refine your search.\n
"):""},dropdownItemNoMatch:null};function jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],n=this.settings,i=this.events.callbacks,s=e?"addEventListener":"removeEventListener";if(!this.state.mainEvents||!e){for(var a in this.state.mainEvents=e,e&&!this.listeners.main&&(this.events.bindGlobal.call(this),this.settings.isJQueryPlugin&&jQuery(this.DOM.originalInput).on("tagify.removeAllTags",this.removeAllTags.bind(this))),t=this.listeners.main=this.listeners.main||{keydown:["input",i.onKeydown.bind(this)],click:["scope",i.onClickScope.bind(this)],dblclick:"select"!=n.mode&&["scope",i.onDoubleClickScope.bind(this)],paste:["input",i.onPaste.bind(this)],drop:["input",i.onDrop.bind(this)],compositionstart:["input",i.onCompositionStart.bind(this)],compositionend:["input",i.onCompositionEnd.bind(this)]})t[a]&&this.DOM[t[a][0]][s](a,t[a][1]);var o=this.listeners.main.inputMutationObserver||new MutationObserver(i.onInputDOMChange.bind(this));o.disconnect(),"mix"==n.mode&&o.observe(this.DOM.input,{childList:!0}),this.events.bindOriginaInputListener.call(this)}},bindOriginaInputListener:function(t){var e=(t||0)+500;this.listeners.main&&(clearInterval(this.listeners.main.originalInputValueObserverInterval),this.listeners.main.originalInputValueObserverInterval=setInterval(this.events.callbacks.observeOriginalInputValue.bind(this),e))},bindGlobal:function(t){var e,n=this.events.callbacks,i=t?"removeEventListener":"addEventListener";if(this.listeners&&(t||!this.listeners.global)){this.listeners.global=this.listeners.global||[{type:this.isIE?"keydown":"input",target:this.DOM.input,cb:n[this.isIE?"onInputIE":"onInput"].bind(this)},{type:"keydown",target:window,cb:n.onWindowKeyDown.bind(this)},{type:"focusin",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"focusout",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"click",target:document,cb:n.onClickAnywhere.bind(this),useCapture:!0}];var s=!0,a=!1,o=void 0;try{for(var r,l=this.listeners.global[Symbol.iterator]();!(s=(r=l.next()).done);s=!0)(e=r.value).target[i](e.type,e.cb,!!e.useCapture)}catch(t){a=!0,o=t}finally{try{s||null==l.return||l.return()}finally{if(a)throw o}}}},unbindGlobal:function(){this.events.bindGlobal.call(this,!0)},callbacks:{onFocusBlur:function(t){var e,n,i=this.settings,s=wt.call(this,t.relatedTarget),a=vt.call(this,t.relatedTarget),o=t.target.classList.contains(i.classNames.tagX),r="focusin"==t.type,l="focusout"==t.type;o&&"mix"!=i.mode&&this.DOM.input.focus(),s&&r&&!a&&!o&&this.toggleFocusClass(this.state.hasFocus=+new Date);var d=t.target?this.trim(this.DOM.input.textContent):"",c=null===(n=this.value)||void 0===n||null===(e=n[0])||void 0===e?void 0:e[i.tagTextProp],u=i.dropdown.enabled>=0,h={relatedTarget:t.relatedTarget},g=this.state.actions.selectOption&&(u||!i.dropdown.closeOnSelect),p=this.state.actions.addNew&&u;if(l){if(t.relatedTarget===this.DOM.scope)return this.dropdown.hide(),void this.DOM.input.focus();this.postUpdate(),i.onChangeAfterBlur&&this.triggerChangeEvent()}if(!(g||p||o))if(this.state.hasFocus=!(!r&&!s)&&+new Date,this.toggleFocusClass(this.state.hasFocus),"mix"!=i.mode){if(r){if(!i.focusable)return;var f=0===i.dropdown.enabled&&!this.state.dropdown.visible,m=!a||"select"===i.mode,v=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector);return this.trigger("focus",h),void(f&&m&&(this.dropdown.show(this.value.length?"":void 0),this.setRangeAtStartEnd(!1,v)))}if(l){if(this.trigger("blur",h),this.loading(!1),"select"==i.mode){if(this.value.length){var w=this.getTagElms()[0];d=this.trim(w.textContent)}c===d&&(d="")}d&&!this.state.actions.selectOption&&i.addTagOnBlur&&i.addTagOn.includes("blur")&&this.addTags(d,!0)}s||(this.DOM.input.removeAttribute("style"),this.dropdown.hide())}else r?this.trigger("focus",h):l&&(this.trigger("blur",h),this.loading(!1),this.dropdown.hide(),this.state.dropdown.visible=void 0,this.setStateSelection())},onCompositionStart:function(t){this.state.composing=!0},onCompositionEnd:function(t){this.state.composing=!1},onWindowKeyDown:function(t){var e,n=this.settings,i=document.activeElement,s=wt.call(this,i)&&this.DOM.scope.contains(i),a=i===this.DOM.input,o=s&&i.hasAttribute("readonly"),r=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),l=this.state.dropdown.visible;if(("Tab"===t.key&&l||this.state.hasFocus||s&&!o)&&!a){e=i.nextElementSibling;var d=t.target.classList.contains(n.classNames.tagX);switch(t.key){case"Backspace":n.readonly||this.state.editing||(this.removeTags(i),(e||this.DOM.input).focus());break;case"Enter":if(d)return void this.removeTags(t.target.parentNode);n.a11y.focusableTags&&vt.call(this,i)&&setTimeout(this.editTag.bind(this),0,i);break;case"ArrowDown":this.state.dropdown.visible||"mix"==n.mode||this.dropdown.show();break;case"Tab":null==r||r.focus()}}},onKeydown:function(t){var e=this,n=this.settings;if(!this.state.composing&&n.userInput){"select"==n.mode&&n.enforceWhitelist&&this.value.length&&"Tab"!=t.key&&t.preventDefault();var i=this.trim(t.target.textContent);this.trigger("keydown",{event:t}),n.hooks.beforeKeyDown(t,{tagify:this}).then((function(s){if("mix"==n.mode){switch(t.key){case"Left":case"ArrowLeft":e.state.actions.ArrowLeft=!0;break;case"Delete":case"Backspace":if(e.state.editing)return;var a=document.getSelection(),o="Delete"==t.key&&a.anchorOffset==(a.anchorNode.length||0),r=a.anchorNode.previousSibling,l=1==a.anchorNode.nodeType||!a.anchorOffset&&r&&1==r.nodeType&&a.anchorNode.previousSibling;!function(t){var e=document.createElement("div");t.replace(/\&#?[0-9a-z]+;/gi,(function(t){return e.innerHTML=t,e.innerText}))}(e.DOM.input.innerHTML);var d,c,u,h=e.getTagElms(),g=1===a.anchorNode.length&&a.anchorNode.nodeValue==String.fromCharCode(8203);if("edit"==n.backspace&&l)return d=1==a.anchorNode.nodeType?null:a.anchorNode.previousElementSibling,setTimeout(e.editTag.bind(e),0,d),void t.preventDefault();if(ft()&&qt(l,Element))return u=dt(l),l.hasAttribute("readonly")||l.remove(),e.DOM.input.focus(),void setTimeout((function(){St(u),e.DOM.input.click()}));if("BR"==a.anchorNode.nodeName)return;if((o||l)&&1==a.anchorNode.nodeType?c=0==a.anchorOffset?o?h[0]:null:h[Math.min(h.length,a.anchorOffset)-1]:o?c=a.anchorNode.nextElementSibling:qt(l,Element)&&(c=l),3==a.anchorNode.nodeType&&!a.anchorNode.nodeValue&&a.anchorNode.previousElementSibling&&t.preventDefault(),(l||o)&&!n.backspace)return void t.preventDefault();if("Range"!=a.type&&!a.anchorOffset&&a.anchorNode==e.DOM.input&&"Delete"!=t.key)return void t.preventDefault();if("Range"!=a.type&&c&&c.hasAttribute("readonly"))return void St(dt(c));"Delete"==t.key&&g&&Tt(a.anchorNode.nextSibling)&&e.removeTags(a.anchorNode.nextSibling)}return!0}var p="manual"==n.dropdown.position;switch(t.key){case"Backspace":"select"==n.mode&&n.enforceWhitelist&&e.value.length?e.removeTags():e.state.dropdown.visible&&"manual"!=n.dropdown.position||""!=t.target.textContent&&8203!=i.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0));break;case"Esc":case"Escape":if(e.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":e.state.dropdown.visible||e.dropdown.show();break;case"ArrowRight":var f=e.state.inputSuggestion||e.state.ddItemData;if(f&&n.autoComplete.rightKey)return void e.addTags([f],!0);break;case"Tab":return!0;case"Enter":if(e.state.dropdown.visible&&!p)return;t.preventDefault();var m=e.state.autoCompleteData||i;setTimeout((function(){e.state.dropdown.visible&&!p||e.state.actions.selectOption||!n.addTagOn.includes(t.key.toLowerCase())||(e.addTags([m],!0),e.state.autoCompleteData=null)}))}})).catch((function(t){return t}))}},onInput:function(t){this.postUpdate();var e=this.settings;if("mix"==e.mode)return this.events.callbacks.onMixTagsInput.call(this,t);var n=this.input.normalize.call(this,void 0,{trim:!1}),i=n.length>=e.dropdown.enabled,s={value:n,inputElm:this.DOM.input},a=this.validateTag({value:n});"select"==e.mode&&this.toggleScopeValidation(a),s.isValid=a,this.state.inputText!=n&&(this.input.set.call(this,n,!1),-1!=n.search(e.delimiters)?this.addTags(n)&&this.input.set.call(this):e.dropdown.enabled>=0&&this.dropdown[i?"show":"hide"](n),this.trigger("input",s))},onMixTagsInput:function(t){var e,n,i,s,a,o,r,l,d=this,c=this.settings,u=this.value.length,h=this.getTagElms(),g=document.createDocumentFragment(),p=window.getSelection().getRangeAt(0),f=[].map.call(h,(function(t){return Tt(t).value}));if("deleteContentBackward"==t.inputType&&ft()&&this.events.callbacks.onKeydown.call(this,{target:t.target,key:"Backspace"}),xt(this.getTagElms()),this.value.slice().forEach((function(t){t.readonly&&!f.includes(t.value)&&g.appendChild(d.createTagElem(t))})),g.childNodes.length&&(p.insertNode(g),this.setRangeAtStartEnd(!1,g.lastChild)),h.length!=u)return this.value=[].map.call(this.getTagElms(),(function(t){return Tt(t)})),void this.update({withoutChangeEvent:!0});if(this.hasMaxTags())return!0;if(window.getSelection&&(o=window.getSelection()).rangeCount>0&&3==o.anchorNode.nodeType){if((p=o.getRangeAt(0).cloneRange()).collapse(!0),p.setStart(o.focusNode,0),i=(e=p.toString().slice(0,p.endOffset)).split(c.pattern).length-1,(n=e.match(c.pattern))&&(s=e.slice(e.lastIndexOf(n[n.length-1]))),s){if(this.state.actions.ArrowLeft=!1,this.state.tag={prefix:s.match(c.pattern)[0],value:s.replace(c.pattern,"")},this.state.tag.baseOffset=o.baseOffset-this.state.tag.value.length,l=this.state.tag.value.match(c.delimiters))return this.state.tag.value=this.state.tag.value.replace(c.delimiters,""),this.state.tag.delimiters=l[0],this.addTags(this.state.tag.value,c.dropdown.clearOnSelect),void this.dropdown.hide();a=this.state.tag.value.length>=c.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||i500||!e.focusable)?this.state.dropdown.visible?this.dropdown.hide():0===e.dropdown.enabled&&"mix"!=e.mode&&this.dropdown.show(this.value.length?"":void 0):"select"!=e.mode||0!==e.dropdown.enabled||this.state.dropdown.visible||(this.events.callbacks.onDoubleClickScope.call(this,function(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n.push.apply(n,i)}return n}(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t}(function(t){for(var e=1;e=this.settings.dropdown.enabled&&(this.state.editing&&(this.state.editing.value=o),this.dropdown.show(o)),this.trigger("edit:input",{tag:i,index:s,data:ht({},this.value[s],{newValue:o}),event:e})},onEditTagPaste:function(t,e){var n=(e.clipboardData||window.clipboardData).getData("Text");e.preventDefault();var i=bt(n);this.setRangeAtStartEnd(!1,i)},onEditTagClick:function(t,e){this.events.callbacks.onClickScope.call(this,e)},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t,e){var n=vt.call(this,e.relatedTarget);if("select"==this.settings.mode&&n&&e.relatedTarget.contains(e.target))this.dropdown.hide();else if(this.state.editing&&(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(document.activeElement)||this.trigger("blur",{}),this.DOM.scope.contains(t))){var i,s,a,o=this.settings,r=t.closest("."+o.classNames.tag),l=Tt(r),d=this.input.normalize.call(this,t),c=(Ht(i={},o.tagTextProp,d),Ht(i,"__tagId",l.__tagId),i),u=l.__originalData,h=this.editTagChangeDetected(ht(l,c)),g=this.validateTag(c);if(d)if(h){var p;if(s=this.hasMaxTags(),a=ht({},u,(Ht(p={},o.tagTextProp,this.trim(d)),Ht(p,"__isValid",g),p)),o.transformTag.call(this,a,u),!0!==(g=(!s||!0===u.__isValid)&&this.validateTag(a))){if(this.trigger("invalid",{data:a,tag:r,message:g}),o.editTags.keepInvalid)return;o.keepInvalidTags?a.__isValid=g:a=u}else o.keepInvalidTags&&(delete a.title,delete a["aria-invalid"],delete a.class);this.onEditTagDone(r,a)}else this.onEditTagDone(r,u);else this.onEditTagDone(r)}},onEditTagkeydown:function(t,e){if(!this.state.composing)switch(this.trigger("edit:keydown",{event:t}),t.key){case"Esc":case"Escape":this.state.editing=!1,e.__tagifyTagData.__originalData.value?e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML,e):e.remove();break;case"Enter":case"Tab":t.preventDefault(),setTimeout((function(){return t.target.blur()}),0)}},onDoubleClickScope:function(t){var e=t.target.closest("."+this.settings.classNames.tag);if(e){var n,i,s=Tt(e),a=this.settings;!1!==(null==s?void 0:s.editable)&&(n=e.classList.contains(this.settings.classNames.tagEditing),i=e.hasAttribute("readonly"),a.readonly||n||i||!this.settings.editTags||!a.userInput||(this.events.callbacks.onEditTagFocus.call(this,e),this.editTag(e)),this.toggleFocusClass(!0),"select"!=a.mode&&this.trigger("dblclick",{tag:e,index:this.getNodeIndex(e),data:Tt(e)}))}},onInputDOMChange:function(t){var e=this;t.forEach((function(t){t.addedNodes.forEach((function(t){if("

"==t.outerHTML)t.replaceWith(document.createElement("br"));else if(1==t.nodeType&&t.querySelector(e.settings.classNames.tagSelector)){var n,i=document.createTextNode("");3==t.childNodes[0].nodeType&&"BR"!=t.previousSibling.nodeName&&(i=document.createTextNode("\n")),(n=t).replaceWith.apply(n,Rt([i].concat(Rt(Rt(t.childNodes).slice(0,-1))))),St(i)}else if(vt.call(e,t)){var s;if(3!=(null===(s=t.previousSibling)||void 0===s?void 0:s.nodeType)||t.previousSibling.textContent||t.previousSibling.remove(),t.previousSibling&&"BR"==t.previousSibling.nodeName){t.previousSibling.replaceWith("\n​");for(var a=t.nextSibling,o="";a;)o+=a.textContent,a=a.nextSibling;o.trim()&&St(t.previousSibling)}else t.previousSibling&&!Tt(t.previousSibling)||t.before("​")}})),t.removedNodes.forEach((function(t){t&&"BR"==t.nodeName&&vt.call(e,n)&&(e.removeTags(n),e.fixFirefoxLastTagNoCaret())}))}));var n=this.DOM.input.lastChild;n&&""==n.nodeValue&&n.remove(),n&&"BR"==n.nodeName||this.DOM.input.appendChild(document.createElement("br"))}}};function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.map((t=>t.value)),dropdown:{enabled:e.dropdownSuggestionsStartAfter,maxItems:e.dropdownMaxItems,closeOnSelect:e.dropdownCloseOnSelect,highlightFirst:e.highlight},transformTag(t){t.display||(t.display=t.value,t.value=encodeURIComponent(t.value)),t.display=t.display.replace(//g,">")},templates:{wrapper(t,e){return`
\n ${this.settings.templates.input.call(this)}\n ​\n
`},tag:t=>`
\n \n
\n ${t.display}\n
\n
`,dropdownItem:t=>`
\n ${t.display}\n
`}}}(e.id,n));o.addTags(i),void 0!==s&&o.on("input",(t=>{!function(t,e,n,i,s,a){Qt instanceof AbortController&&Qt.abort(),Qt=new AbortController,t.whitelist=null,void 0!==Gt&&(t.DOM.scope.ownerDocument.defaultView.clearTimeout(Gt),Gt=void 0),s.detail.value.length{const e=s.detail.value;n.writeParameter(i,e),t.loading(!0),fetch(n.getUrl().toString(),{signal:Qt.signal}).then((t=>t.json())).catch((()=>{})).then((n=>{t.whitelist=n,t.loading(!1).dropdown.show(e)}))}),a))}(o,n.suggestionStarts,s,a,t,n.autocompleteTriggerTimeout)}))}Jt.prototype={_dropdown:Lt,placeCaretAfterNode:St,getSetTagData:Tt,helpers:{sameStr:at,removeCollectionProp:ot,omit:rt,isObject:ut,parseHTML:lt,escapeHTML:ct,extend:ht,concatWithoutDups:gt,getUID:mt,isNodeTag:vt},customEventsList:["change","add","remove","invalid","input","paste","click","keydown","focus","blur","edit:input","edit:beforeUpdate","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select","dropdown:updated","dropdown:noMatch","dropdown:scroll"],dataProps:["__isValid","__removed","__originalData","__originalHTML","__tagId"],trim:function(t){return this.settings.trim&&t&&"string"==typeof t?t.trim():t},parseHTML:lt,templates:Bt,parseTemplate:function(t,e){return lt((t=this.settings.templates[t]||t).apply(this,e))},set whitelist(t){var e=t&&Array.isArray(t);this.settings.whitelist=e?t:[],this.setPersistedData(e?t:[],"whitelist")},get whitelist(){return this.settings.whitelist},set userInput(t){this.settings.userInput=!!t,this.setContentEditable(!!t)},get userInput(){return this.settings.userInput},generateClassSelectors:function(t){var e=function(e){var n=e;Object.defineProperty(t,n+"Selector",{get:function(){return"."+this[n].split(" ")[0]}})};for(var n in t)e(n)},applySettings:function(t,e){var n,i;Et.templates=this.templates;var s=ht({},Et,"mix"==e.mode?{dropdown:{position:"text"}}:{}),a=this.settings=ht({},s,e);if(a.disabled=t.hasAttribute("disabled"),a.readonly=a.readonly||t.hasAttribute("readonly"),a.placeholder=ct(t.getAttribute("placeholder")||a.placeholder||""),a.required=t.hasAttribute("required"),this.generateClassSelectors(a.classNames),this.isIE&&(a.autoComplete=!1),["whitelist","blacklist"].forEach((function(e){var n=t.getAttribute("data-"+e);n&&zt(n=n.split(a.delimiters),Array)&&(a[e]=n)})),"autoComplete"in e&&!ut(e.autoComplete)&&(a.autoComplete=Et.autoComplete,a.autoComplete.enabled=e.autoComplete),"mix"==a.mode&&(a.pattern=a.pattern||/@/,a.autoComplete.rightKey=!0,a.delimiters=e.delimiters||null,a.tagTextProp&&!a.dropdown.searchKeys.includes(a.tagTextProp)&&a.dropdown.searchKeys.push(a.tagTextProp)),t.pattern)try{a.pattern=new RegExp(t.pattern)}catch(t){}if(a.delimiters){a._delimiters=a.delimiters;try{a.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}}a.disabled&&(a.userInput=!1),this.TEXTS=Kt({},Pt,a.texts||{}),"select"==a.mode&&(a.dropdown.includeSelectedTags=!0),("select"!=a.mode||(null===(n=e.dropdown)||void 0===n?void 0:n.enabled))&&a.userInput||(a.dropdown.enabled=0),a.dropdown.appendTarget=(null===(i=e.dropdown)||void 0===i?void 0:i.appendTarget)||document.body,void 0===a.dropdown.includeSelectedTags&&(a.dropdown.includeSelectedTags=a.duplicates);var o=this.getPersistedData("whitelist");Array.isArray(o)&&(this.whitelist=Array.isArray(a.whitelist)?gt(a.whitelist,o):o)},getAttributes:function(t){var e,n=this.getCustomAttributes(t),i="";for(e in n)i+=" "+e+(void 0!==t[e]?'="'.concat(n[e],'"'):"");return i},getCustomAttributes:function(t){if(!ut(t))return"";var e,n={};for(e in t)"__"!=e.slice(0,2)&&"class"!=e&&t.hasOwnProperty(e)&&void 0!==t[e]&&(n[e]=ct(t[e]));return n},setStateSelection:function(){var t=window.getSelection(),e={anchorOffset:t.anchorOffset,anchorNode:t.anchorNode,range:t.getRangeAt&&t.rangeCount&&t.getRangeAt(0)};return this.state.selection=e,e},getCSSVars:function(){var t,e,n=getComputedStyle(this.DOM.scope,null);this.CSSVars={tagHideTransition:(t=function(t){if(!t)return{};var e=(t=t.trim().split(" ")[0]).split(/\d+/g).filter((function(t){return t})).pop().trim();return{value:+t.split(e).filter((function(t){return t}))[0].trim(),unit:e}}(("tag-hide-transition",n.getPropertyValue("--tag-hide-transition"))),e=t.value,"s"==t.unit?1e3*e:e)}},build:function(t){var e=this.DOM,n=t.closest("label");this.settings.mixMode.integrated?(e.originalInput=null,e.scope=t,e.input=t):(e.originalInput=t,e.originalInput_tabIndex=t.tabIndex,e.scope=this.parseTemplate("wrapper",[t,this.settings]),e.input=e.scope.querySelector(this.settings.classNames.inputSelector),t.parentNode.insertBefore(e.scope,t),t.tabIndex=-1),n&&n.setAttribute("for","")},destroy:function(){var t;this.events.unbindGlobal.call(this),null===(t=this.DOM.scope.parentNode)||void 0===t||t.removeChild(this.DOM.scope),this.DOM.originalInput.tabIndex=this.DOM.originalInput_tabIndex,delete this.DOM.originalInput.__tagify,this.dropdown.hide(!0),this.removeAllCustomListeners(),clearTimeout(this.dropdownHide__bindEventsTimeout),clearInterval(this.listeners.main.originalInputValueObserverInterval)},loadOriginalValues:function(t){var e,n=this.settings;if(this.state.blockChangeEvent=!0,void 0===t){var i=this.getPersistedData("value");t=i&&!this.DOM.originalInput.value?i:n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value}if(this.removeAllTags(),t)if("mix"==n.mode)this.parseMixTags(t),(e=this.DOM.input.lastChild)&&"BR"==e.tagName||this.DOM.input.insertAdjacentHTML("beforeend","
");else{try{zt(JSON.parse(t),Array)&&(t=JSON.parse(t))}catch(t){}this.addTags(t,!0).forEach((function(t){return t&&t.classList.add(n.classNames.tagNoAnimation)}))}else this.postUpdate();this.state.lastOriginalValueReported=n.mixMode.integrated?"":this.DOM.originalInput.value},cloneEvent:function(t){var e={};for(var n in t)"path"!=n&&(e[n]=t[n]);return e},loading:function(t){return this.state.isLoading=t,this.DOM.scope.classList[t?"add":"remove"](this.settings.classNames.scopeLoading),this},tagLoading:function(t,e){return t&&t.classList[e?"add":"remove"](this.settings.classNames.tagLoading),this},toggleClass:function(t,e){"string"==typeof t&&this.DOM.scope.classList.toggle(t,e)},toggleScopeValidation:function(t){var e=!0===t||void 0===t;!this.settings.required&&t&&t===this.TEXTS.empty&&(e=!0),this.toggleClass(this.settings.classNames.tagInvalid,!e),this.DOM.scope.title=e?"":t},toggleFocusClass:function(t){this.toggleClass(this.settings.classNames.focus,!!t)},setPlaceholder:function(t){var e=this;["data","aria"].forEach((function(n){return e.DOM.input.setAttribute("".concat(n,"-placeholder"),t)}))},triggerChangeEvent:function(){if(!this.settings.mixMode.integrated){var t=this.DOM.originalInput,e=this.state.lastOriginalValueReported!==t.value,n=new CustomEvent("change",{bubbles:!0});e&&(this.state.lastOriginalValueReported=t.value,n.simulated=!0,t._valueTracker&&t._valueTracker.setValue(Math.random()),t.dispatchEvent(n),this.trigger("change",this.state.lastOriginalValueReported),t.value=this.state.lastOriginalValueReported)}},events:$t,fixFirefoxLastTagNoCaret:function(){},setRangeAtStartEnd:function(t,e){if(e){t="number"==typeof t?t:!!t,e=e.lastChild||e;var n=document.getSelection();if(zt(n.focusNode,Element)&&!this.DOM.input.contains(n.focusNode))return!0;try{n.rangeCount>=1&&["Start","End"].forEach((function(i){return n.getRangeAt(0)["set"+i](e,t||e.length)}))}catch(t){console.warn(t)}}},insertAfterTag:function(t,e){if(e=e||this.settings.mixMode.insertAfterTag,t&&t.parentNode&&e)return e="string"==typeof e?document.createTextNode(e):e,t.parentNode.insertBefore(e,t.nextSibling),e},editTagChangeDetected:function(t){var e=t.__originalData;for(var n in e)if(!this.dataProps.includes(n)&&t[n]!=e[n])return!0;return!1},getTagTextNode:function(t){return t.querySelector(this.settings.classNames.tagTextSelector)},setTagTextNode:function(t,e){this.getTagTextNode(t).innerHTML=ct(e)},editTag:function(t,e){var n=this;t=t||this.getLastTag(),e=e||{};var i=this.settings,s=this.getTagTextNode(t),a=this.getNodeIndex(t),o=Tt(t),r=this.events.callbacks,l=!0,d="select"==i.mode;if(!d&&this.dropdown.hide(),s){if(!zt(o,Object)||!("editable"in o)||o.editable)return o=Tt(t,{__originalData:ht({},o),__originalHTML:t.cloneNode(!0)}),Tt(o.__originalHTML,o.__originalData),s.setAttribute("contenteditable",!0),t.classList.add(i.classNames.tagEditing),this.events.callbacks.onEditTagFocus.call(this,t),s.addEventListener("click",r.onEditTagClick.bind(this,t)),s.addEventListener("blur",r.onEditTagBlur.bind(this,this.getTagTextNode(t))),s.addEventListener("input",r.onEditTagInput.bind(this,s)),s.addEventListener("paste",r.onEditTagPaste.bind(this,s)),s.addEventListener("keydown",(function(e){return r.onEditTagkeydown.call(n,e,t)})),s.addEventListener("compositionstart",r.onCompositionStart.bind(this)),s.addEventListener("compositionend",r.onCompositionEnd.bind(this)),e.skipValidation||(l=this.editTagToggleValidity(t)),s.originalIsValid=l,this.trigger("edit:start",{tag:t,index:a,data:o,isValid:l}),s.focus(),!d&&this.setRangeAtStartEnd(!1,s),0===i.dropdown.enabled&&!d&&this.dropdown.show(),this.state.hasFocus=!0,this}else st.warn("Cannot find element in Tag template: .",i.classNames.tagTextSelector)},editTagToggleValidity:function(t,e){var n;if(e=e||Tt(t))return(n=!("__isValid"in e)||!0===e.__isValid)||this.removeTagsFromValue(t),this.update(),t.classList.toggle(this.settings.classNames.tagNotAllowed,!n),e.__isValid=n,e.__isValid;st.warn("tag has no data: ",t,e)},onEditTagDone:function(t,e){t=t||this.state.editing.scope,e=e||{};var n,i,s=this.settings,a={tag:t,index:this.getNodeIndex(t),previousData:Tt(t),data:e};this.trigger("edit:beforeUpdate",a,{cloneData:!1}),this.state.editing=!1,delete e.__originalData,delete e.__originalHTML,t&&t.parentNode&&((void 0!==(i=e[s.tagTextProp])?null===(n=(i+="").trim)||void 0===n?void 0:n.call(i):s.tagTextProp in e?void 0:e.value)?(t=this.replaceTag(t,e),this.editTagToggleValidity(t,e),s.a11y.focusableTags?t.focus():"select"!=s.mode&&St(t)):this.removeTags(t)),this.trigger("edit:updated",a),s.dropdown.closeOnSelect&&this.dropdown.hide(),this.settings.keepInvalidTags&&this.reCheckInvalidTags()},replaceTag:function(t,e){e&&""!==e.value&&void 0!==e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&ht(e,this.getInvalidTagAttrs(e,e.__isValid));var n=this.createTagElem(e);return t.parentNode.replaceChild(n,t),this.updateValueByDOMTags(),n},updateValueByDOMTags:function(){var t=this;this.value.length=0;var e=this.settings.classNames,n=[e.tagNotAllowed.split(" ")[0],e.tagHide];[].forEach.call(this.getTagElms(),(function(e){Xt(e.classList).some((function(t){return n.includes(t)}))||t.value.push(Tt(e))})),this.update(),this.dropdown.refilter()},injectAtCaret:function(t,e){var n;if(e=e||(null===(n=this.state.selection)||void 0===n?void 0:n.range),"string"==typeof t&&(t=document.createTextNode(t)),!e&&t)return this.appendMixTags(t),this;var i=bt(t,e);return this.setRangeAtStartEnd(!1,i),this.updateValueByDOMTags(),this.update(),this},input:{set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.settings,i=n.dropdown.closeOnSelect;this.state.inputText=t,e&&(this.DOM.input.innerHTML=ct(""+t),t&&this.toggleClass(n.classNames.empty,!this.DOM.input.innerHTML)),!t&&i&&this.dropdown.hide.bind(this),this.input.autocomplete.suggest.call(this),this.input.validate.call(this)},raw:function(){return this.DOM.input.textContent},validate:function(){var t=!this.state.inputText||!0===this.validateTag({value:this.state.inputText});return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid,!t),t},normalize:function(t,e){var n=t||this.DOM.input,i=[];n.childNodes.forEach((function(t){return 3==t.nodeType&&i.push(t.nodeValue)})),i=i.join("\n");try{i=i.replace(/(?:\r\n|\r|\n)/g,this.settings.delimiters.source.charAt(0))}catch(t){}return i=i.replace(/\s/g," "),(null==e?void 0:e.trim)?this.trim(i):i},autocomplete:{suggest:function(t){if(this.settings.autoComplete.enabled){"object"!=typeof(t=t||{value:""})&&(t={value:t});var e=this.dropdown.getMappedValue(t);if("number"!=typeof e){var n=this.state.inputText.toLowerCase(),i=e.substr(0,this.state.inputText.length).toLowerCase(),s=e.substring(this.state.inputText.length);e&&this.state.inputText&&i==n?(this.DOM.input.setAttribute("data-suggest",s),this.state.inputSuggestion=t):(this.DOM.input.removeAttribute("data-suggest"),delete this.state.inputSuggestion)}}},set:function(t){var e=this.DOM.input.getAttribute("data-suggest"),n=t||(e?this.state.inputText+e:null);return!!n&&("mix"==this.settings.mode?this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix+n)):(this.input.set.call(this,n),this.setRangeAtStartEnd(!1,this.DOM.input)),this.input.autocomplete.suggest.call(this),this.dropdown.hide(),!0)}}},getTagIdx:function(t){return this.value.findIndex((function(e){return e.__tagId==(t||{}).__tagId}))},getNodeIndex:function(t){var e=0;if(t)for(;t=t.previousElementSibling;)e++;return e},getTagElms:function(){for(var t=arguments.length,e=new Array(t),n=0;n=this.settings.maxTags&&this.TEXTS.exceed},setReadonly:function(t,e){var n=this.settings;this.DOM.scope.contains(document.activeElement)&&document.activeElement.blur(),n[e||"readonly"]=t,this.DOM.scope[(t?"set":"remove")+"Attribute"](e||"readonly",!0),this.settings.userInput=!0,this.setContentEditable(!t)},setContentEditable:function(t){this.DOM.input.contentEditable=t,this.DOM.input.tabIndex=t?0:-1},setDisabled:function(t){this.setReadonly(t,"disabled")},normalizeTags:function(t){var e=this,n=this.settings,i=n.whitelist,s=n.delimiters,a=n.mode,o=n.tagTextProp,r=[],l=!!i&&zt(i[0],Object),d=Array.isArray(t),c=d&&t[0].value,u=function(t){return(t+"").split(s).reduce((function(t,n){var i,s=e.trim(n);return s&&t.push((Wt(i={},o,s),Wt(i,"value",s),i)),t}),[])};if("number"==typeof t&&(t=t.toString()),"string"==typeof t){if(!t.trim())return[];t=u(t)}else d&&(t=t.reduce((function(t,n){if(ut(n)){var i=ht({},n);o in i||(o="value"),i[o]=e.trim(i[o]),(i[o]||0===i[o])&&t.push(i)}else if(null!=n&&""!==n&&void 0!==n){var s;(s=t).push.apply(s,Xt(u(n)))}return t}),[]));return l&&!c&&(t.forEach((function(t){var n=r.map((function(t){return t.value})),i=e.dropdown.filterListItems.call(e,t[o],{exact:!0});e.settings.duplicates||(i=i.filter((function(t){return!n.includes(t.value)})));var s=i.length>1?e.getWhitelistItem(t[o],o,i):i[0];s&&zt(s,Object)?r.push(s):"mix"!=a&&(null==t.value&&(t.value=t[o]),r.push(t))})),r.length&&(t=r)),t},parseMixTags:function(t){var e=this,n=this.settings,i=n.mixTagsInterpolator,s=n.duplicates,a=n.transformTag,o=n.enforceWhitelist,r=n.maxTags,l=n.tagTextProp,d=[];t=t.split(i[0]).map((function(t,n){var c,u,h,g=t.split(i[1]),p=g[0],f=d.length==r;try{if(p==+p)throw Error;u=JSON.parse(p)}catch(t){u=e.normalizeTags(p)[0]||{value:p}}if(a.call(e,u),f||!(g.length>1)||o&&!e.isTagWhitelisted(u.value)||!s&&e.isTagDuplicate(u.value)){if(t)return n?i[0]+t:t}else u[c=u[l]?l:"value"]=e.trim(u[c]),h=e.createTagElem(u),d.push(u),h.classList.add(e.settings.classNames.tagNoAnimation),g[0]=h.outerHTML,e.value.push(u);return g.join("")})).join(""),this.DOM.input.innerHTML=t,this.DOM.input.appendChild(document.createTextNode("")),this.DOM.input.normalize();var c=this.getTagElms();return c.forEach((function(t,e){return Tt(t,d[e])})),this.update({withoutChangeEvent:!0}),xt(c,this.state.hasFocus),t},replaceTextWithNode:function(t,e){if(this.state.tag||e){e=e||this.state.tag.prefix+this.state.tag.value;var n,i,s=this.state.selection||window.getSelection(),a=s.anchorNode,o=this.state.tag.delimiters?this.state.tag.delimiters.length:0;return a.splitText(s.anchorOffset-o),-1==(n=a.nodeValue.lastIndexOf(e))||(i=a.splitText(n),t&&a.parentNode.replaceChild(t,i)),!0}},prepareNewTagNode:function(t,e){e=e||{};var n=this.settings,i=[],s={},a=Object.assign({},t,{value:t.value+""});if(t=Object.assign({},a),n.transformTag.call(this,t),t.__isValid=this.hasMaxTags()||this.validateTag(t),!0!==t.__isValid){if(e.skipInvalid)return;if(ht(s,this.getInvalidTagAttrs(t,t.__isValid),{__preInvalidData:a}),t.__isValid==this.TEXTS.duplicate&&this.flashTag(this.getTagElmByValue(t.value)),!n.createInvalidTags)return void i.push(t.value)}return"readonly"in t&&(t.readonly?s["aria-readonly"]=!0:delete t.readonly),{tagElm:this.createTagElem(t,s),tagData:t,aggregatedInvalidInput:i}},postProcessNewTagNode:function(t,e){var n=this,i=this.settings,s=e.__isValid;s&&!0===s?this.value.push(e):(this.trigger("invalid",{data:e,index:this.value.length,tag:t,message:s}),i.keepInvalidTags||setTimeout((function(){return n.removeTags(t,!0)}),1e3)),this.dropdown.position()},selectTag:function(t,e){var n=this;if(!this.settings.enforceWhitelist||this.isTagWhitelisted(e.value)){this.state.actions.selectOption&&setTimeout((function(){return n.setRangeAtStartEnd(!1,n.DOM.input)}));var i=this.getLastTag();return i?this.replaceTag(i,e):this.appendTag(t),this.value[0]=e,this.update(),this.trigger("add",{tag:t,data:e}),[t]}},addEmptyTag:function(t){var e=ht({value:""},t||{}),n=this.createTagElem(e);Tt(n,e),this.appendTag(n),this.editTag(n,{skipValidation:!0}),this.toggleFocusClass(!0)},addTags:function(t,e,n){var i=this,s=[],a=this.settings,o=[],r=document.createDocumentFragment(),l=[];if(!t||0==t.length)return s;switch(t=this.normalizeTags(t),a.mode){case"mix":return this.addMixTags(t);case"select":e=!1,this.removeAllTags()}return this.DOM.input.removeAttribute("style"),t.forEach((function(t){var e=i.prepareNewTagNode(t,{skipInvalid:n||a.skipInvalid});if(e){var d=e.tagElm;if(t=e.tagData,o=e.aggregatedInvalidInput,s.push(d),"select"==a.mode)return i.selectTag(d,t);r.appendChild(d),i.postProcessNewTagNode(d,t),l.push({tagElm:d,tagData:t})}})),this.appendTag(r),l.forEach((function(t){var e=t.tagElm,n=t.tagData;return i.trigger("add",{tag:e,index:i.getTagIdx(n),data:n})})),this.update(),t.length&&e&&(this.input.set.call(this,a.createInvalidTags?"":o.join(a._delimiters)),this.setRangeAtStartEnd(!1,this.DOM.input)),this.dropdown.refilter(),s},addMixTags:function(t){var e=this;if((t=this.normalizeTags(t))[0].prefix||this.state.tag)return this.prefixedTextToTag(t[0]);var n=document.createDocumentFragment();return t.forEach((function(t){var i=e.prepareNewTagNode(t);n.appendChild(i.tagElm),e.insertAfterTag(i.tagElm),e.postProcessNewTagNode(i.tagElm,i.tagData)})),this.appendMixTags(n),n.children},appendMixTags:function(t){var e=!!this.state.selection;e?this.injectAtCaret(t):(this.DOM.input.focus(),(e=this.setStateSelection()).range.setStart(this.DOM.input,e.range.endOffset),e.range.setEnd(this.DOM.input,e.range.endOffset),this.DOM.input.appendChild(t),this.updateValueByDOMTags(),this.update())},prefixedTextToTag:function(t){var e,n,i,s=this,a=this.settings,o=null===(e=this.state.tag)||void 0===e?void 0:e.delimiters;if(t.prefix=t.prefix||this.state.tag?this.state.tag.prefix:(a.pattern.source||a.pattern)[0],i=this.prepareNewTagNode(t),n=i.tagElm,this.replaceTextWithNode(n)||this.DOM.input.appendChild(n),setTimeout((function(){return n.classList.add(s.settings.classNames.tagNoAnimation)}),300),this.update(),!o){var r=this.insertAfterTag(n)||n;setTimeout(St,0,r)}return this.state.tag=null,this.postProcessNewTagNode(n,i.tagData),n},appendTag:function(t){var e=this.DOM,n=e.input;e.scope.insertBefore(t,n)},createTagElem:function(t,e){t.__tagId=mt();var n,i=ht({},t,Kt({value:ct(t.value+"")},e));return function(t){for(var e,n=document.createNodeIterator(t,NodeFilter.SHOW_TEXT,null,!1);e=n.nextNode();)e.textContent.trim()||e.parentNode.removeChild(e)}(n=this.parseTemplate("tag",[i,this])),Tt(n,t),n},reCheckInvalidTags:function(){var t=this,e=this.settings;this.getTagElms(e.classNames.tagNotAllowed).forEach((function(n,i){var s=Tt(n),a=t.hasMaxTags(),o=t.validateTag(s),r=!0===o&&!a;if("select"==e.mode&&t.toggleScopeValidation(o),r)return s=s.__preInvalidData?s.__preInvalidData:{value:s.value},t.replaceTag(n,s);n.title=a||o}))},removeTags:function(t,e,n){var i,s=this,a=this.settings;if(t=t&&zt(t,HTMLElement)?[t]:zt(t,Array)?t:t?[t]:[this.getLastTag()].filter((function(t){return t})),i=t.reduce((function(t,e){e&&"string"==typeof e&&(e=s.getTagElmByValue(e));var n=Tt(e);return e&&n&&!n.readonly&&t.push({node:e,idx:s.getTagIdx(n),data:Tt(e,{__removed:!0})}),t}),[]),n="number"==typeof n?n:this.CSSVars.tagHideTransition,"select"==a.mode&&(n=0,this.input.set.call(this)),1==i.length&&"select"!=a.mode&&i[0].node.classList.contains(a.classNames.tagNotAllowed)&&(e=!0),i.length)return a.hooks.beforeRemoveTag(i,{tagify:this}).then((function(){var t=function(t){t.node.parentNode&&(t.node.parentNode.removeChild(t.node),e?a.keepInvalidTags&&this.trigger("remove",{tag:t.node,index:t.idx}):(this.trigger("remove",{tag:t.node,index:t.idx,data:t.data}),this.dropdown.refilter(),this.dropdown.position(),this.DOM.input.normalize(),a.keepInvalidTags&&this.reCheckInvalidTags()))};n&&n>10&&1==i.length?function(e){e.node.style.width=parseFloat(window.getComputedStyle(e.node).width)+"px",document.body.clientTop,e.node.classList.add(a.classNames.tagHide),setTimeout(t.bind(this),n,e)}.call(s,i[0]):i.forEach(t.bind(s)),e||(s.removeTagsFromValue(i.map((function(t){return t.node}))),s.update(),"select"==a.mode&&a.userInput&&s.setContentEditable(!0))})).catch((function(t){}))},removeTagsFromDOM:function(){this.getTagElms().forEach((function(t){return t.remove()}))},removeTagsFromValue:function(t){var e=this;(t=Array.isArray(t)?t:[t]).forEach((function(t){var n=Tt(t),i=e.getTagIdx(n);i>-1&&e.value.splice(i,1)}))},removeAllTags:function(t){var e=this;t=t||{},this.value=[],"mix"==this.settings.mode?this.DOM.input.innerHTML="":this.removeTagsFromDOM(),this.dropdown.refilter(),this.dropdown.position(),this.state.dropdown.visible&&setTimeout((function(){e.DOM.input.focus()})),"select"==this.settings.mode&&(this.input.set.call(this),this.settings.userInput&&this.setContentEditable(!0)),this.update(t)},postUpdate:function(){this.state.blockChangeEvent=!1;var t,e,n=this.settings,i=n.classNames,s="mix"==n.mode?n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value.trim():this.value.length+this.input.raw.call(this).length;this.toggleClass(i.hasMaxTags,this.value.length>=n.maxTags),this.toggleClass(i.hasNoTags,!this.value.length),this.toggleClass(i.empty,!s),"select"==n.mode&&this.toggleScopeValidation(null===(e=this.value)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.__isValid)},setOriginalInputValue:function(t){var e=this.DOM.originalInput;this.settings.mixMode.integrated||(e.value=t,e.tagifyValue=e.value,this.setPersistedData(t,"value"))},update:function(t){clearTimeout(this.debouncedUpdateTimeout),this.debouncedUpdateTimeout=setTimeout(function(){var e=this.getInputValue();this.setOriginalInputValue(e),this.settings.onChangeAfterBlur&&(t||{}).withoutChangeEvent||this.state.blockChangeEvent||this.triggerChangeEvent(),this.postUpdate()}.bind(this),100),this.events.bindOriginaInputListener.call(this,100)},getInputValue:function(){var t=this.getCleanValue();return"mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):""},getCleanValue:function(t){return ot(t||this.value,this.dataProps)},getMixedTagsAsString:function(){var t="",e=this,n=this.settings,i=n.originalInputValueFormat||JSON.stringify,s=n.mixTagsInterpolator;return function n(a){a.childNodes.forEach((function(a){if(1==a.nodeType){var o=Tt(a);if("BR"==a.tagName&&(t+="\r\n"),o&&vt.call(e,a)){if(o.__removed)return;t+=s[0]+i(rt(o,e.dataProps))+s[1]}else a.getAttribute("style")||["B","I","U"].includes(a.tagName)?t+=a.textContent:"DIV"!=a.tagName&&"P"!=a.tagName||(t+="\r\n",n(a))}else t+=a.textContent}))}(this.DOM.input),t}},Jt.prototype.removeTag=Jt.prototype.removeTags;class Zt{#U;#W;#z;#K;#X;#J;#Q;#G;#Y;#Z;#tt;#et;#nt;#it;#st;#at=null;constructor(t,e,n,i,s,a,o,r,l,d,c,u){this.#U=t,this.#Z=e,this.#W=n,this.#z=i,this.#K=s,this.#X=a,this.#nt=o,this.#it=u,this.#st=this.#it.innerHTML,this.#Y=r,this.#J=l,this.#Q=d,this.#G=c,this.#et=!1,this.#tt=!1,this.#W.addEventListener("input",(t=>{this.filterItemsSearch(t)})),this.#Y.addEventListener("click",(()=>{this.setFiltered(!1)})),this.#J.addEventListener("click",(()=>{this.toggleVisibility()})),"radio-field-input"===this.#z&&this.#X.forEach((t=>{t.addEventListener("change",(()=>{this.scrollListToTop()}))}))}isEngaged(){return this.#et}isFiltered(){return this.#tt}setFiltered(t){this.#tt!==t&&(this.#tt=t,t?(this.#Y.style.removeProperty("display"),this.#it.style.removeProperty("display")):(this.#W.value="",this.#Y.style.display="none",this.#it.style.display="none",this.#nt.style.display="none",this.#ot()))}toggleVisibility(){this.isEngaged()?(this.#et=!1,this.#U.classList.remove("engaged"),this.setFiltered(!1),this.#J.setAttribute("aria-expanded","false"),this.#Q.style.removeProperty("display"),this.#G.style.display="none"):(this.#et=!0,this.#U.classList.add("engaged"),this.#J.setAttribute("aria-expanded","true"),this.#Q.style.display="none",this.#G.style.removeProperty("display"))}#rt(t){this.#U.ownerDocument.defaultView.clearTimeout(this.#at),this.#at=this.#U.ownerDocument.defaultView.setTimeout((()=>{this.#it.textContent="",this.#U.ownerDocument.defaultView.requestAnimationFrame((()=>{this.#it.textContent=t}))}),500)}#lt(t){const e=$(this.#st,t);this.#rt(e)}filterItemsSearch(t){const e=t.target.value.toLowerCase();this.setFiltered(!!e);let n=0,i=!1;this.#X.forEach((t=>{t.textContent.toLowerCase().includes(e)?(n+=1,i=!0,te(t)):function(t){t.style.display="none"}(t)})),this.#lt(n.toString()),""!==e&&!1===i?this.#nt.style.removeProperty("display"):(""===e||i)&&(this.#nt.style.display="none")}#ot(){this.#X.forEach((t=>te(t)))}scrollListToTop(){this.#Z.scrollTo({top:0,behavior:"smooth"})}}function te(t){t.style.removeProperty("display")}class ee{#V=new Map;init(t){if(void 0===t)throw new TypeError("During init of an InputHasOptionFilter an undefined element was passed to the factory.");if(this.#V.has(t.id))throw new Error(`A InputHasOptionFilter with id '${t.id}' has already been initialized.`);const e=t,n=e.querySelector(".c-input--has-option-filter__field"),i=e.querySelector(".c-input--has-option-filter__search-input input"),s=e.getAttribute("data-il-ui-component"),a=e.querySelector(".c-field--has-option-filter__list"),o=a.querySelectorAll(".c-field--has-option-filter__item"),r=e.querySelector(".message-no-match"),l=e.querySelector('.c-input--has-option-filter__synopsis [role="status"]'),d=e.querySelector(".c-input--has-option-filter__clear-search"),c=e.querySelector(".c-input--has-option-filter__visibility-toggle"),u=c.querySelector(".text-expand"),h=c.querySelector(".text-collapse"),g=new Zt(t,n,i,s,a,o,r,d,c,u,h,l);return this.#V.set(t.id,g),g}get(t){return this.#V.has(t)?this.#V.get(t):null}}var ne;e.UI=e.UI||{},e.UI.Input=e.UI.Input||{},(ne=e.UI.Input).textarea=new o,ne.mustacheVariables={init:(t,e)=>function(t,e){e.querySelectorAll(".c-input--has-mustache-variables__definitions > li > a").forEach((e=>{const n=function(t){const e=t.textContent.match(/^\s*\{\{([^}]+)\}\}\s*$/);return e?e[1].trim():null}(e);e.addEventListener("click",(()=>{t.insertCharactersAroundSelection(`{{${n}}}`,"")}))}))}(t,e)},ne.markdown=new w,ne.optionFilter=new ee,ne.treeSelect=new Z(new tt(t),e.UI.menu.drilldown,{txt:t=>e.Language.txt(t)},n),ne.tagInput=ne.tag||{},ne.tagInput.init=(t,e,n,i,s)=>Yt(Jt,t,e,n,i,s)}($,il,document); + */var et="​";function nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n/g,">").replace(/"/g,""").replace(/`|'/g,"'"):t}function ut(t){var e=Object.prototype.toString.call(t).split(" ")[1].slice(0,-1);return t===Object(t)&&"Array"!=e&&"Function"!=e&&"RegExp"!=e&&"HTMLUnknownElement"!=e}function ht(t,e,n){var i,s;function a(t,e){for(var n in e)if(e.hasOwnProperty(n)){if(ut(e[n])){ut(t[n])?a(t[n],e[n]):t[n]=Object.assign({},e[n]);continue}if(Array.isArray(e[n])){t[n]=Object.assign([],e[n]);continue}t[n]=e[n]}}return i=t,(null!=(s=Object)&&"undefined"!=typeof Symbol&&s[Symbol.hasInstance]?s[Symbol.hasInstance](i):i instanceof s)||(t={}),a(t,e),n&&a(t,n),t}function gt(){var t=[],e={},n=!0,i=!1,s=void 0;try{for(var a,o=arguments[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var r=a.value,l=!0,d=!1,c=void 0;try{for(var u,h=r[Symbol.iterator]();!(l=(u=h.next()).done);l=!0){var g=u.value;ut(g)?e[g.value]||(t.push(g),e[g.value]=1):t.includes(g)||t.push(g)}}catch(t){d=!0,c=t}finally{try{l||null==h.return||h.return()}finally{if(d)throw c}}}}catch(t){i=!0,s=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw s}}return t}function pt(t){return String.prototype.normalize?"string"==typeof t?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):void 0:t}var ft=function(){return/(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function vt(t){var e;return wt.call(this,t)&&(null==t||null===(e=t.classList)||void 0===e?void 0:e.contains(this.settings.classNames.tag))}function yt(t){return wt.call(this,t)&&(null==t?void 0:t.closest(this.settings.classNames.tagSelector))}function wt(t){var e;return(null==t||null===(e=t.closest)||void 0===e?void 0:e.call(t,this.settings.classNames.namespaceSelector))===this.DOM.scope}function bt(t,e){var n=window.getSelection();return e=e||n.getRangeAt(0),"string"==typeof t&&(t=document.createTextNode(t)),e&&(e.deleteContents(),e.insertNode(t)),t}function Tt(t,e,n){return t?(e&&(t.__tagifyTagData=n?e:ht({},t.__tagifyTagData||{},e)),t.__tagifyTagData):(st.warn("tag element doesn't exist",{tagElm:t,data:e}),e)}function St(t){if(t&&t.parentNode){var e=t,n=window.getSelection(),i=n.getRangeAt(0);n.rangeCount&&(i.setStartAfter(e),i.collapse(!0),n.removeAllRanges(),n.addRange(i))}}function Et(t,e){t.forEach((function(t){if(Tt(t.previousSibling)||!t.previousSibling){var n=document.createTextNode("​");t.before(n),e&&St(n)}}))}var xt={delimiters:",",pattern:null,tagTextProp:"value",maxTags:1/0,callbacks:{},addTagOnBlur:!0,addTagOn:["blur","tab","enter"],onChangeAfterBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,userInput:!0,focusable:!0,keepInvalidTags:!1,createInvalidTags:!0,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,pasteAsTags:!0,editTags:{clicks:2,keepInvalid:!0},transformTag:function(){},trim:!0,a11y:{focusableTags:!1},mixMode:{insertAfterTag:" "},autoComplete:{enabled:!0,rightKey:!1,tabKey:!1},classNames:{namespace:"tagify",mixMode:"tagify--mix",selectMode:"tagify--select",input:"tagify__input",focus:"tagify--focus",tagNoAnimation:"tagify--noAnim",tagInvalid:"tagify--invalid",tagNotAllowed:"tagify--notAllowed",scopeLoading:"tagify--loading",hasMaxTags:"tagify--hasMaxTags",hasNoTags:"tagify--noTags",empty:"tagify--empty",inputInvalid:"tagify__input--invalid",dropdown:"tagify__dropdown",dropdownWrapper:"tagify__dropdown__wrapper",dropdownHeader:"tagify__dropdown__header",dropdownFooter:"tagify__dropdown__footer",dropdownItem:"tagify__dropdown__item",dropdownItemActive:"tagify__dropdown__item--active",dropdownItemHidden:"tagify__dropdown__item--hidden",dropdownItemSelected:"tagify__dropdown__item--selected",dropdownInital:"tagify__dropdown--initial",tag:"tagify__tag",tagText:"tagify__tag-text",tagX:"tagify__tag__removeBtn",tagLoading:"tagify__tag--loading",tagEditing:"tagify__tag--editable",tagFlash:"tagify__tag--flash",tagHide:"tagify__tag--hide"},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:["value","searchBy"],fuzzySearch:!0,caseSensitive:!1,accentedSearch:!0,includeSelectedTags:!1,escapeHTML:!0,highlightFirst:!0,closeOnSelect:!0,clearOnSelect:!0,position:"all",appendTarget:null},hooks:{beforeRemoveTag:function(){return Promise.resolve()},beforePaste:function(){return Promise.resolve()},suggestionClick:function(){return Promise.resolve()},beforeKeyDown:function(){return Promise.resolve()}}};function Ot(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],e=this.dropdown.events.callbacks,n=this.listeners.dropdown=this.listeners.dropdown||{position:this.dropdown.position.bind(this,null),onKeyDown:e.onKeyDown.bind(this),onMouseOver:e.onMouseOver.bind(this),onMouseLeave:e.onMouseLeave.bind(this),onClick:e.onClick.bind(this),onScroll:e.onScroll.bind(this)},i=t?"addEventListener":"removeEventListener";"manual"!=this.settings.dropdown.position&&(document[i]("scroll",n.position,!0),window[i]("resize",n.position),window[i]("keydown",n.onKeyDown)),this.DOM.dropdown[i]("mouseover",n.onMouseOver),this.DOM.dropdown[i]("mouseleave",n.onMouseLeave),this.DOM.dropdown[i]("mousedown",n.onClick),this.DOM.dropdown.content[i]("scroll",n.onScroll)},callbacks:{onKeyDown:function(t){var e=this;if(this.state.hasFocus&&!this.state.composing){var n=this.settings,i=n.dropdown.includeSelectedTags,s=this.DOM.dropdown.querySelector(n.classNames.dropdownItemActiveSelector),a=this.dropdown.getSuggestionDataByNode(s),o="mix"==n.mode,r="select"==n.mode;n.hooks.beforeKeyDown(t,{tagify:this}).then((function(l){switch(t.key){case"ArrowDown":case"ArrowUp":case"Down":case"Up":t.preventDefault();var d=e.dropdown.getAllSuggestionsRefs(),c="ArrowUp"==t.key||"Up"==t.key;s&&(s=e.dropdown.getNextOrPrevOption(s,!c)),s&&s.matches(n.classNames.dropdownItemSelector)||(s=d[c?d.length-1:0]),e.dropdown.highlightOption(s,!0);break;case"PageUp":case"PageDown":var u;t.preventDefault();var h=e.dropdown.getAllSuggestionsRefs(),g=Math.floor(e.DOM.dropdown.content.clientHeight/(null===(u=h[0])||void 0===u?void 0:u.offsetHeight))||1,p="PageUp"===t.key;if(s){var f=h.indexOf(s),m=p?Math.max(0,f-g):Math.min(h.length-1,f+g);s=h[m]}else s=h[0];e.dropdown.highlightOption(s,!0);break;case"Home":case"End":t.preventDefault();var v=e.dropdown.getAllSuggestionsRefs();s=v["Home"===t.key?0:v.length-1],e.dropdown.highlightOption(s,!0);break;case"Escape":case"Esc":e.dropdown.hide();break;case"ArrowRight":if(e.state.actions.ArrowLeft||n.autoComplete.rightKey)return;case"Tab":var y=!n.autoComplete.rightKey||!n.autoComplete.tabKey;if(!o&&!r&&s&&y&&!e.state.editing&&a){t.preventDefault();var w=e.dropdown.getMappedValue(a);return e.state.autoCompleteData=a,e.input.autocomplete.set.call(e,w),!1}return!0;case"Enter":t.preventDefault(),e.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),n.hooks.suggestionClick(t,{tagify:e,tagData:a,suggestionElm:s}).then((function(){if(s){var n=i?s:e.dropdown.getNextOrPrevOption(s,!c);e.dropdown.selectOption(s,t,(function(){if(n){var t=n.getAttribute("value");n=e.dropdown.getSuggestionNodeByValue(t),e.dropdown.highlightOption(n)}}))}else e.dropdown.hide(),o||e.addTags(e.state.inputText.trim(),!0)})).catch((function(t){return st.warn(t)}));break;case"Backspace":if(o||e.state.editing.scope)return;var b=e.input.raw.call(e);""!=b&&8203!=b.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0))}}))}},onMouseOver:function(t){var e=t.target.closest(this.settings.classNames.dropdownItemSelector);this.dropdown.highlightOption(e)},onMouseLeave:function(t){this.dropdown.highlightOption()},onClick:function(t){var e=this;if(0==t.button&&t.target!=this.DOM.dropdown&&t.target!=this.DOM.dropdown.content){var n=t.target.closest(this.settings.classNames.dropdownItemSelector),i=this.dropdown.getSuggestionDataByNode(n);this.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),this.settings.hooks.suggestionClick(t,{tagify:this,tagData:i,suggestionElm:n}).then((function(){n?e.dropdown.selectOption(n,t):e.dropdown.hide()})).catch((function(t){return st.warn(t)}))}},onScroll:function(t){var e=t.target,n=e.scrollTop/(e.scrollHeight-e.parentNode.clientHeight)*100;this.trigger("dropdown:scroll",{percentage:Math.round(n)})}}},refilter:function(t){t=t||this.state.dropdown.query||"",this.suggestedListItems=this.dropdown.filterListItems(t),this.dropdown.fill(),this.suggestedListItems.length||this.dropdown.hide(),this.trigger("dropdown:updated",this.DOM.dropdown)},getSuggestionDataByNode:function(t){for(var e,n=t&&t.getAttribute("value"),i=this.suggestedListItems.length;i--;){if(ut(e=this.suggestedListItems[i])&&e.value==n)return e;if(e==n)return{value:e}}},getSuggestionNodeByValue:function(t){return this.dropdown.getAllSuggestionsRefs().find((function(e){return e.getAttribute("value")===t}))},getNextOrPrevOption:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.dropdown.getAllSuggestionsRefs(),i=n.findIndex((function(e){return e===t}));return e?n[i+1]:n[i-1]},highlightOption:function(t,e){var n,i=this.settings.classNames.dropdownItemActive;if(this.state.ddItemElm&&(this.state.ddItemElm.classList.remove(i),this.state.ddItemElm.removeAttribute("aria-selected")),!t)return this.state.ddItemData=null,this.state.ddItemElm=null,void this.input.autocomplete.suggest.call(this);n=this.dropdown.getSuggestionDataByNode(t),this.state.ddItemData=n,this.state.ddItemElm=t,t.classList.add(i),t.setAttribute("aria-selected",!0),e&&(t.parentNode.scrollTop=t.clientHeight+t.offsetTop-t.parentNode.clientHeight),this.settings.autoComplete&&(this.input.autocomplete.suggest.call(this,n),this.dropdown.position())},selectOption:function(t,e,n){var i=this,s=this.settings,a=s.dropdown.includeSelectedTags,o=s.dropdown,r=o.clearOnSelect,l=o.closeOnSelect;if(!t)return this.addTags(this.state.inputText,!0),void(l&&this.dropdown.hide());e=e||{};var d=t.getAttribute("value"),c="noMatch"==d,u="mix"==s.mode,h=this.suggestedListItems.find((function(t){var e;return(null!==(e=t.value)&&void 0!==e?e:t)==d}));if(this.trigger("dropdown:select",{data:h,elm:t,event:e}),h||c){if(this.state.editing){var g=this.normalizeTags([h])[0];h=s.transformTag.call(this,g)||g,this.onEditTagDone(null,ht({__isValid:!0},h))}else this[u?"addMixTags":"addTags"]([h||this.input.raw.call(this)],r);(u||this.DOM.input.parentNode)&&(setTimeout((function(){i.DOM.input.focus(),i.toggleFocusClass(!0)})),l&&setTimeout(this.dropdown.hide.bind(this)),a?n&&n():(t.addEventListener("transitionend",(function(){i.dropdown.fillHeaderFooter(),setTimeout((function(){t.remove(),i.dropdown.refilter(),n&&n()}),100)}),{once:!0}),t.classList.add(this.settings.classNames.dropdownItemHidden)))}else l&&setTimeout(this.dropdown.hide.bind(this))},selectAll:function(t){this.suggestedListItems.length=0,this.dropdown.hide(),this.dropdown.filterListItems("");var e=this.dropdown.filterListItems("");return t||(e=this.state.dropdown.suggestions),this.addTags(e,!0),this},filterListItems:function(t,e){var n,i,s,a,o,r,l=function(){var t,l,d=void 0,c=void 0;t=p[w],i=(null!=(l=Object)&&"undefined"!=typeof Symbol&&l[Symbol.hasInstance]?l[Symbol.hasInstance](t):t instanceof l)?p[w]:{value:p[w]};var f,m=Object.keys(i).some((function(t){return y.includes(t)}))?y:["value"];u.fuzzySearch&&!e.exact?(a=m.reduce((function(t,e){return t+" "+(i[e]||"")}),"").toLowerCase().trim(),u.accentedSearch&&(a=pt(a),r=pt(r)),d=0==a.indexOf(r),c=a===r,f=a,s=r.toLowerCase().split(" ").every((function(t){return f.includes(t.toLowerCase())}))):(d=!0,s=m.some((function(t){var n=""+(i[t]||"");return u.accentedSearch&&(n=pt(n),r=pt(r)),u.caseSensitive||(n=n.toLowerCase()),c=n===r,e.exact?n===r:0==n.indexOf(r)}))),o=!u.includeSelectedTags&&n.isTagDuplicate(ut(i)?i.value:i),s&&!o&&(c&&d?g.push(i):"startsWith"==u.sortby&&d?h.unshift(i):h.push(i))},d=this,c=this.settings,u=c.dropdown,h=(e=e||{},[]),g=[],p=c.whitelist,f=u.maxItems>=0?u.maxItems:1/0,m=u.includeSelectedTags,v="function"==typeof u.sortby,y=u.searchKeys,w=0;if(!(t="select"==c.mode&&this.value.length&&this.value[0][c.tagTextProp]==t?"":t)||!y.length){h=m?p:p.filter((function(t){return!d.isTagDuplicate(ut(t)?t.value:t)}));var b=v?u.sortby(h,r):h.slice(0,f);return this.state.dropdown.suggestions=b,b}for(r=u.caseSensitive?""+t:(""+t).toLowerCase();w[\r\n ]+\<").split(/>\s+<").trim():""},fillHeaderFooter:function(){var t=this.dropdown.filterListItems(this.state.dropdown.query),e=this.parseTemplate("dropdownHeader",[t]),n=this.parseTemplate("dropdownFooter",[t]),i=this.dropdown.getHeaderRef(),s=this.dropdown.getFooterRef();e&&(null==i||i.parentNode.replaceChild(e,i)),n&&(null==s||s.parentNode.replaceChild(n,s))},position:function(t){var e=this.settings.dropdown,n=this.dropdown.getAppendTarget();if("manual"!=e.position&&n){var i,s,a,o,r,l,d,c,u,h,g=this.DOM.dropdown,p=e.RTL,f=n===document.body,m=n===this.DOM.scope,v=f?window.pageYOffset:n.scrollTop,y=document.fullscreenElement||document.webkitFullscreenElement||document.documentElement,w=y.clientHeight,b=Math.max(y.clientWidth||0,window.innerWidth||0),T=b>480?e.position:"all",S=this.DOM["input"==T?"input":"scope"];if(t=t||g.clientHeight,this.state.dropdown.visible){if("text"==T?(a=(i=function(){var t=document.getSelection();if(t.rangeCount){var e,n,i=t.getRangeAt(0),s=i.startContainer,a=i.startOffset;if(a>0)return(n=document.createRange()).setStart(s,a-1),n.setEnd(s,a),{left:(e=n.getBoundingClientRect()).right,top:e.top,bottom:e.bottom};if(s.getBoundingClientRect)return s.getBoundingClientRect()}return{left:-9999,top:-9999}}()).bottom,s=i.top,o=i.left,r="auto"):(l=function(t){var e=0,n=0;for(t=t.parentNode;t&&t!=y;)e+=t.offsetTop||0,n+=t.offsetLeft||0,t=t.parentNode;return{top:e,left:n}}(n),i=S.getBoundingClientRect(),s=m?-1:i.top-l.top,a=(m?i.height:i.bottom-l.top)-1,o=m?-1:i.left-l.left,r=i.width+"px"),!f){var E=function(){for(var t=0,n=e.appendTarget.parentNode;n;)t+=n.scrollTop||0,n=n.parentNode;return t}();s+=E,a+=E}var x;s=Math.floor(s),a=Math.ceil(a),c=b-o<120,u=((d=null!==(x=e.placeAbove)&&void 0!==x?x:w-i.bottom\n ').concat(this.settings.templates.input.call(this),"\n ").concat(et,"\n ")},input:function(){var t=this.settings,e=t.placeholder||et;return"')},tag:function(t,e){var n=e.settings;return'\n \n
\n ').concat(t[n.tagTextProp]||t.value,"\n
\n
")},dropdown:function(t){var e=t.dropdown,n="manual"==e.position;return'
\n
\n
')},dropdownContent:function(t){var e=this.settings.templates,n=this.state.dropdown.suggestions;return"\n ".concat(e.dropdownHeader.call(this,n),"\n ").concat(t,"\n ").concat(e.dropdownFooter.call(this,n),"\n ")},dropdownItem:function(t){return"
').concat(t.mappedValue||t.value,"
")},dropdownHeader:function(t){return"
')},dropdownFooter:function(t){var e=t.length-this.settings.dropdown.maxItems;return e>0?"
\n ').concat(e," more items. Refine your search.\n
"):""},dropdownItemNoMatch:null};function jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],n=this.settings,i=this.events.callbacks,s=e?"addEventListener":"removeEventListener";if(!this.state.mainEvents||!e){for(var a in this.state.mainEvents=e,e&&!this.listeners.main&&(this.events.bindGlobal.call(this),this.settings.isJQueryPlugin&&jQuery(this.DOM.originalInput).on("tagify.removeAllTags",this.removeAllTags.bind(this))),t=this.listeners.main=this.listeners.main||{keydown:["input",i.onKeydown.bind(this)],click:["scope",i.onClickScope.bind(this)],dblclick:"select"!=n.mode&&["scope",i.onDoubleClickScope.bind(this)],paste:["input",i.onPaste.bind(this)],drop:["input",i.onDrop.bind(this)],compositionstart:["input",i.onCompositionStart.bind(this)],compositionend:["input",i.onCompositionEnd.bind(this)]})t[a]&&this.DOM[t[a][0]][s](a,t[a][1]);var o=this.listeners.main.inputMutationObserver||new MutationObserver(i.onInputDOMChange.bind(this));o.disconnect(),"mix"==n.mode&&o.observe(this.DOM.input,{childList:!0}),this.events.bindOriginaInputListener.call(this)}},bindOriginaInputListener:function(t){var e=(t||0)+500;this.listeners.main&&(clearInterval(this.listeners.main.originalInputValueObserverInterval),this.listeners.main.originalInputValueObserverInterval=setInterval(this.events.callbacks.observeOriginalInputValue.bind(this),e))},bindGlobal:function(t){var e,n=this.events.callbacks,i=t?"removeEventListener":"addEventListener";if(this.listeners&&(t||!this.listeners.global)){this.listeners.global=this.listeners.global||[{type:this.isIE?"keydown":"input",target:this.DOM.input,cb:n[this.isIE?"onInputIE":"onInput"].bind(this)},{type:"keydown",target:window,cb:n.onWindowKeyDown.bind(this)},{type:"focusin",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"focusout",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"click",target:document,cb:n.onClickAnywhere.bind(this),useCapture:!0}];var s=!0,a=!1,o=void 0;try{for(var r,l=this.listeners.global[Symbol.iterator]();!(s=(r=l.next()).done);s=!0)(e=r.value).target[i](e.type,e.cb,!!e.useCapture)}catch(t){a=!0,o=t}finally{try{s||null==l.return||l.return()}finally{if(a)throw o}}}},unbindGlobal:function(){this.events.bindGlobal.call(this,!0)},callbacks:{onFocusBlur:function(t){var e,n,i=this.settings,s=yt.call(this,t.relatedTarget),a=vt.call(this,t.relatedTarget),o=t.target.classList.contains(i.classNames.tagX),r="focusin"==t.type,l="focusout"==t.type;o&&"mix"!=i.mode&&this.DOM.input.focus(),s&&r&&!a&&!o&&this.toggleFocusClass(this.state.hasFocus=+new Date);var d=t.target?this.trim(this.DOM.input.textContent):"",c=null===(n=this.value)||void 0===n||null===(e=n[0])||void 0===e?void 0:e[i.tagTextProp],u=i.dropdown.enabled>=0,h={relatedTarget:t.relatedTarget},g=this.state.actions.selectOption&&(u||!i.dropdown.closeOnSelect),p=this.state.actions.addNew&&u;if(l){if(t.relatedTarget===this.DOM.scope)return this.dropdown.hide(),void this.DOM.input.focus();this.postUpdate(),i.onChangeAfterBlur&&this.triggerChangeEvent()}if(!(g||p||o))if(this.state.hasFocus=!(!r&&!s)&&+new Date,this.toggleFocusClass(this.state.hasFocus),"mix"!=i.mode){if(r){if(!i.focusable)return;var f=0===i.dropdown.enabled&&!this.state.dropdown.visible,m=!a||"select"===i.mode,v=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector);return this.trigger("focus",h),void(f&&m&&(this.dropdown.show(this.value.length?"":void 0),this.setRangeAtStartEnd(!1,v)))}if(l){if(this.trigger("blur",h),this.loading(!1),"select"==i.mode){if(this.value.length){var y=this.getTagElms()[0];d=this.trim(y.textContent)}c===d&&(d="")}d&&!this.state.actions.selectOption&&i.addTagOnBlur&&i.addTagOn.includes("blur")&&this.addTags(d,!0)}s||(this.DOM.input.removeAttribute("style"),this.dropdown.hide())}else r?this.trigger("focus",h):l&&(this.trigger("blur",h),this.loading(!1),this.dropdown.hide(),this.state.dropdown.visible=void 0,this.setStateSelection())},onCompositionStart:function(t){this.state.composing=!0},onCompositionEnd:function(t){this.state.composing=!1},onWindowKeyDown:function(t){var e,n=this.settings,i=document.activeElement,s=yt.call(this,i)&&this.DOM.scope.contains(i),a=i===this.DOM.input,o=s&&i.hasAttribute("readonly"),r=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),l=this.state.dropdown.visible;if(("Tab"===t.key&&l||this.state.hasFocus||s&&!o)&&!a){e=i.nextElementSibling;var d=t.target.classList.contains(n.classNames.tagX);switch(t.key){case"Backspace":n.readonly||this.state.editing||(this.removeTags(i),(e||this.DOM.input).focus());break;case"Enter":if(d)return void this.removeTags(t.target.parentNode);n.a11y.focusableTags&&vt.call(this,i)&&setTimeout(this.editTag.bind(this),0,i);break;case"ArrowDown":this.state.dropdown.visible||"mix"==n.mode||this.dropdown.show();break;case"Tab":null==r||r.focus()}}},onKeydown:function(t){var e=this,n=this.settings;if(!this.state.composing&&n.userInput){"select"==n.mode&&n.enforceWhitelist&&this.value.length&&"Tab"!=t.key&&t.preventDefault();var i=this.trim(t.target.textContent);this.trigger("keydown",{event:t}),n.hooks.beforeKeyDown(t,{tagify:this}).then((function(s){if("mix"==n.mode){switch(t.key){case"Left":case"ArrowLeft":e.state.actions.ArrowLeft=!0;break;case"Delete":case"Backspace":if(e.state.editing)return;var a=document.getSelection(),o="Delete"==t.key&&a.anchorOffset==(a.anchorNode.length||0),r=a.anchorNode.previousSibling,l=1==a.anchorNode.nodeType||!a.anchorOffset&&r&&1==r.nodeType&&a.anchorNode.previousSibling;!function(t){var e=document.createElement("div");t.replace(/\&#?[0-9a-z]+;/gi,(function(t){return e.innerHTML=t,e.innerText}))}(e.DOM.input.innerHTML);var d,c,u,h=e.getTagElms(),g=1===a.anchorNode.length&&a.anchorNode.nodeValue==String.fromCharCode(8203);if("edit"==n.backspace&&l)return d=1==a.anchorNode.nodeType?null:a.anchorNode.previousElementSibling,setTimeout(e.editTag.bind(e),0,d),void t.preventDefault();if(ft()&&Ht(l,Element))return u=dt(l),l.hasAttribute("readonly")||l.remove(),e.DOM.input.focus(),void setTimeout((function(){St(u),e.DOM.input.click()}));if("BR"==a.anchorNode.nodeName)return;if((o||l)&&1==a.anchorNode.nodeType?c=0==a.anchorOffset?o?h[0]:null:h[Math.min(h.length,a.anchorOffset)-1]:o?c=a.anchorNode.nextElementSibling:Ht(l,Element)&&(c=l),3==a.anchorNode.nodeType&&!a.anchorNode.nodeValue&&a.anchorNode.previousElementSibling&&t.preventDefault(),(l||o)&&!n.backspace)return void t.preventDefault();if("Range"!=a.type&&!a.anchorOffset&&a.anchorNode==e.DOM.input&&"Delete"!=t.key)return void t.preventDefault();if("Range"!=a.type&&c&&c.hasAttribute("readonly"))return void St(dt(c));"Delete"==t.key&&g&&Tt(a.anchorNode.nextSibling)&&e.removeTags(a.anchorNode.nextSibling)}return!0}var p="manual"==n.dropdown.position;switch(t.key){case"Backspace":"select"==n.mode&&n.enforceWhitelist&&e.value.length?e.removeTags():e.state.dropdown.visible&&"manual"!=n.dropdown.position||""!=t.target.textContent&&8203!=i.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0));break;case"Esc":case"Escape":if(e.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":e.state.dropdown.visible||e.dropdown.show();break;case"ArrowRight":var f=e.state.inputSuggestion||e.state.ddItemData;if(f&&n.autoComplete.rightKey)return void e.addTags([f],!0);break;case"Tab":return!0;case"Enter":if(e.state.dropdown.visible&&!p)return;t.preventDefault();var m=e.state.autoCompleteData||i;setTimeout((function(){e.state.dropdown.visible&&!p||e.state.actions.selectOption||!n.addTagOn.includes(t.key.toLowerCase())||(e.addTags([m],!0),e.state.autoCompleteData=null)}))}})).catch((function(t){return t}))}},onInput:function(t){this.postUpdate();var e=this.settings;if("mix"==e.mode)return this.events.callbacks.onMixTagsInput.call(this,t);var n=this.input.normalize.call(this,void 0,{trim:!1}),i=n.length>=e.dropdown.enabled,s={value:n,inputElm:this.DOM.input},a=this.validateTag({value:n});"select"==e.mode&&this.toggleScopeValidation(a),s.isValid=a,this.state.inputText!=n&&(this.input.set.call(this,n,!1),-1!=n.search(e.delimiters)?this.addTags(n)&&this.input.set.call(this):e.dropdown.enabled>=0&&this.dropdown[i?"show":"hide"](n),this.trigger("input",s))},onMixTagsInput:function(t){var e,n,i,s,a,o,r,l,d=this,c=this.settings,u=this.value.length,h=this.getTagElms(),g=document.createDocumentFragment(),p=window.getSelection().getRangeAt(0),f=[].map.call(h,(function(t){return Tt(t).value}));if("deleteContentBackward"==t.inputType&&ft()&&this.events.callbacks.onKeydown.call(this,{target:t.target,key:"Backspace"}),Et(this.getTagElms()),this.value.slice().forEach((function(t){t.readonly&&!f.includes(t.value)&&g.appendChild(d.createTagElem(t))})),g.childNodes.length&&(p.insertNode(g),this.setRangeAtStartEnd(!1,g.lastChild)),h.length!=u)return this.value=[].map.call(this.getTagElms(),(function(t){return Tt(t)})),void this.update({withoutChangeEvent:!0});if(this.hasMaxTags())return!0;if(window.getSelection&&(o=window.getSelection()).rangeCount>0&&3==o.anchorNode.nodeType){if((p=o.getRangeAt(0).cloneRange()).collapse(!0),p.setStart(o.focusNode,0),i=(e=p.toString().slice(0,p.endOffset)).split(c.pattern).length-1,(n=e.match(c.pattern))&&(s=e.slice(e.lastIndexOf(n[n.length-1]))),s){if(this.state.actions.ArrowLeft=!1,this.state.tag={prefix:s.match(c.pattern)[0],value:s.replace(c.pattern,"")},this.state.tag.baseOffset=o.baseOffset-this.state.tag.value.length,l=this.state.tag.value.match(c.delimiters))return this.state.tag.value=this.state.tag.value.replace(c.delimiters,""),this.state.tag.delimiters=l[0],this.addTags(this.state.tag.value,c.dropdown.clearOnSelect),void this.dropdown.hide();a=this.state.tag.value.length>=c.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||i500||!e.focusable)?this.state.dropdown.visible?this.dropdown.hide():0===e.dropdown.enabled&&"mix"!=e.mode&&this.dropdown.show(this.value.length?"":void 0):"select"!=e.mode||0!==e.dropdown.enabled||this.state.dropdown.visible||(this.events.callbacks.onDoubleClickScope.call(this,function(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n.push.apply(n,i)}return n}(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t}(function(t){for(var e=1;e=this.settings.dropdown.enabled&&(this.state.editing&&(this.state.editing.value=o),this.dropdown.show(o)),this.trigger("edit:input",{tag:i,index:s,data:ht({},this.value[s],{newValue:o}),event:e})},onEditTagPaste:function(t,e){var n=(e.clipboardData||window.clipboardData).getData("Text");e.preventDefault();var i=bt(n);this.setRangeAtStartEnd(!1,i)},onEditTagClick:function(t,e){this.events.callbacks.onClickScope.call(this,e)},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t,e){var n=vt.call(this,e.relatedTarget);if("select"==this.settings.mode&&n&&e.relatedTarget.contains(e.target))this.dropdown.hide();else if(this.state.editing&&(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(document.activeElement)||this.trigger("blur",{}),this.DOM.scope.contains(t))){var i,s,a,o=this.settings,r=t.closest("."+o.classNames.tag),l=Tt(r),d=this.input.normalize.call(this,t),c=(qt(i={},o.tagTextProp,d),qt(i,"__tagId",l.__tagId),i),u=l.__originalData,h=this.editTagChangeDetected(ht(l,c)),g=this.validateTag(c);if(d)if(h){var p;if(s=this.hasMaxTags(),a=ht({},u,(qt(p={},o.tagTextProp,this.trim(d)),qt(p,"__isValid",g),p)),o.transformTag.call(this,a,u),!0!==(g=(!s||!0===u.__isValid)&&this.validateTag(a))){if(this.trigger("invalid",{data:a,tag:r,message:g}),o.editTags.keepInvalid)return;o.keepInvalidTags?a.__isValid=g:a=u}else o.keepInvalidTags&&(delete a.title,delete a["aria-invalid"],delete a.class);this.onEditTagDone(r,a)}else this.onEditTagDone(r,u);else this.onEditTagDone(r)}},onEditTagkeydown:function(t,e){if(!this.state.composing)switch(this.trigger("edit:keydown",{event:t}),t.key){case"Esc":case"Escape":this.state.editing=!1,e.__tagifyTagData.__originalData.value?e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML,e):e.remove();break;case"Enter":case"Tab":t.preventDefault(),setTimeout((function(){return t.target.blur()}),0)}},onDoubleClickScope:function(t){var e=t.target.closest("."+this.settings.classNames.tag);if(e){var n,i,s=Tt(e),a=this.settings;!1!==(null==s?void 0:s.editable)&&(n=e.classList.contains(this.settings.classNames.tagEditing),i=e.hasAttribute("readonly"),a.readonly||n||i||!this.settings.editTags||!a.userInput||(this.events.callbacks.onEditTagFocus.call(this,e),this.editTag(e)),this.toggleFocusClass(!0),"select"!=a.mode&&this.trigger("dblclick",{tag:e,index:this.getNodeIndex(e),data:Tt(e)}))}},onInputDOMChange:function(t){var e=this;t.forEach((function(t){t.addedNodes.forEach((function(t){if("

"==t.outerHTML)t.replaceWith(document.createElement("br"));else if(1==t.nodeType&&t.querySelector(e.settings.classNames.tagSelector)){var n,i=document.createTextNode("");3==t.childNodes[0].nodeType&&"BR"!=t.previousSibling.nodeName&&(i=document.createTextNode("\n")),(n=t).replaceWith.apply(n,Rt([i].concat(Rt(Rt(t.childNodes).slice(0,-1))))),St(i)}else if(vt.call(e,t)){var s;if(3!=(null===(s=t.previousSibling)||void 0===s?void 0:s.nodeType)||t.previousSibling.textContent||t.previousSibling.remove(),t.previousSibling&&"BR"==t.previousSibling.nodeName){t.previousSibling.replaceWith("\n​");for(var a=t.nextSibling,o="";a;)o+=a.textContent,a=a.nextSibling;o.trim()&&St(t.previousSibling)}else t.previousSibling&&!Tt(t.previousSibling)||t.before("​")}})),t.removedNodes.forEach((function(t){t&&"BR"==t.nodeName&&vt.call(e,n)&&(e.removeTags(n),e.fixFirefoxLastTagNoCaret())}))}));var n=this.DOM.input.lastChild;n&&""==n.nodeValue&&n.remove(),n&&"BR"==n.nodeName||this.DOM.input.appendChild(document.createElement("br"))}}};function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.map((t=>t.value)),dropdown:{enabled:e.dropdownSuggestionsStartAfter,maxItems:e.dropdownMaxItems,closeOnSelect:e.dropdownCloseOnSelect,highlightFirst:e.highlight},transformTag(t){t.display||(t.display=t.value,t.value=encodeURIComponent(t.value)),t.display=t.display.replace(//g,">")},templates:{wrapper(t,e){return`
\n ${this.settings.templates.input.call(this)}\n ​\n
`},tag:t=>`
\n \n
\n ${t.display}\n
\n
`,dropdownItem:t=>`
\n ${t.display}\n
`}}}(e.id,n));o.addTags(i),void 0!==s&&o.on("input",(t=>{!function(t,e,n,i,s,a){Qt instanceof AbortController&&Qt.abort(),Qt=new AbortController,t.whitelist=null,void 0!==Gt&&(t.DOM.scope.ownerDocument.defaultView.clearTimeout(Gt),Gt=void 0),s.detail.value.length{const e=s.detail.value;n.writeParameter(i,e),t.loading(!0),fetch(n.getUrl().toString(),{signal:Qt.signal}).then((t=>t.json())).catch((()=>{})).then((n=>{t.whitelist=n,t.loading(!1).dropdown.show(e)}))}),a))}(o,n.suggestionStarts,s,a,t,n.autocompleteTriggerTimeout)}))}Jt.prototype={_dropdown:Lt,placeCaretAfterNode:St,getSetTagData:Tt,helpers:{sameStr:at,removeCollectionProp:ot,omit:rt,isObject:ut,parseHTML:lt,escapeHTML:ct,extend:ht,concatWithoutDups:gt,getUID:mt,isNodeTag:vt},customEventsList:["change","add","remove","invalid","input","paste","click","keydown","focus","blur","edit:input","edit:beforeUpdate","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select","dropdown:updated","dropdown:noMatch","dropdown:scroll"],dataProps:["__isValid","__removed","__originalData","__originalHTML","__tagId"],trim:function(t){return this.settings.trim&&t&&"string"==typeof t?t.trim():t},parseHTML:lt,templates:Bt,parseTemplate:function(t,e){return lt((t=this.settings.templates[t]||t).apply(this,e))},set whitelist(t){var e=t&&Array.isArray(t);this.settings.whitelist=e?t:[],this.setPersistedData(e?t:[],"whitelist")},get whitelist(){return this.settings.whitelist},set userInput(t){this.settings.userInput=!!t,this.setContentEditable(!!t)},get userInput(){return this.settings.userInput},generateClassSelectors:function(t){var e=function(e){var n=e;Object.defineProperty(t,n+"Selector",{get:function(){return"."+this[n].split(" ")[0]}})};for(var n in t)e(n)},applySettings:function(t,e){var n,i;xt.templates=this.templates;var s=ht({},xt,"mix"==e.mode?{dropdown:{position:"text"}}:{}),a=this.settings=ht({},s,e);if(a.disabled=t.hasAttribute("disabled"),a.readonly=a.readonly||t.hasAttribute("readonly"),a.placeholder=ct(t.getAttribute("placeholder")||a.placeholder||""),a.required=t.hasAttribute("required"),this.generateClassSelectors(a.classNames),this.isIE&&(a.autoComplete=!1),["whitelist","blacklist"].forEach((function(e){var n=t.getAttribute("data-"+e);n&&zt(n=n.split(a.delimiters),Array)&&(a[e]=n)})),"autoComplete"in e&&!ut(e.autoComplete)&&(a.autoComplete=xt.autoComplete,a.autoComplete.enabled=e.autoComplete),"mix"==a.mode&&(a.pattern=a.pattern||/@/,a.autoComplete.rightKey=!0,a.delimiters=e.delimiters||null,a.tagTextProp&&!a.dropdown.searchKeys.includes(a.tagTextProp)&&a.dropdown.searchKeys.push(a.tagTextProp)),t.pattern)try{a.pattern=new RegExp(t.pattern)}catch(t){}if(a.delimiters){a._delimiters=a.delimiters;try{a.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}}a.disabled&&(a.userInput=!1),this.TEXTS=Kt({},Pt,a.texts||{}),"select"==a.mode&&(a.dropdown.includeSelectedTags=!0),("select"!=a.mode||(null===(n=e.dropdown)||void 0===n?void 0:n.enabled))&&a.userInput||(a.dropdown.enabled=0),a.dropdown.appendTarget=(null===(i=e.dropdown)||void 0===i?void 0:i.appendTarget)||document.body,void 0===a.dropdown.includeSelectedTags&&(a.dropdown.includeSelectedTags=a.duplicates);var o=this.getPersistedData("whitelist");Array.isArray(o)&&(this.whitelist=Array.isArray(a.whitelist)?gt(a.whitelist,o):o)},getAttributes:function(t){var e,n=this.getCustomAttributes(t),i="";for(e in n)i+=" "+e+(void 0!==t[e]?'="'.concat(n[e],'"'):"");return i},getCustomAttributes:function(t){if(!ut(t))return"";var e,n={};for(e in t)"__"!=e.slice(0,2)&&"class"!=e&&t.hasOwnProperty(e)&&void 0!==t[e]&&(n[e]=ct(t[e]));return n},setStateSelection:function(){var t=window.getSelection(),e={anchorOffset:t.anchorOffset,anchorNode:t.anchorNode,range:t.getRangeAt&&t.rangeCount&&t.getRangeAt(0)};return this.state.selection=e,e},getCSSVars:function(){var t,e,n=getComputedStyle(this.DOM.scope,null);this.CSSVars={tagHideTransition:(t=function(t){if(!t)return{};var e=(t=t.trim().split(" ")[0]).split(/\d+/g).filter((function(t){return t})).pop().trim();return{value:+t.split(e).filter((function(t){return t}))[0].trim(),unit:e}}(("tag-hide-transition",n.getPropertyValue("--tag-hide-transition"))),e=t.value,"s"==t.unit?1e3*e:e)}},build:function(t){var e=this.DOM,n=t.closest("label");this.settings.mixMode.integrated?(e.originalInput=null,e.scope=t,e.input=t):(e.originalInput=t,e.originalInput_tabIndex=t.tabIndex,e.scope=this.parseTemplate("wrapper",[t,this.settings]),e.input=e.scope.querySelector(this.settings.classNames.inputSelector),t.parentNode.insertBefore(e.scope,t),t.tabIndex=-1),n&&n.setAttribute("for","")},destroy:function(){var t;this.events.unbindGlobal.call(this),null===(t=this.DOM.scope.parentNode)||void 0===t||t.removeChild(this.DOM.scope),this.DOM.originalInput.tabIndex=this.DOM.originalInput_tabIndex,delete this.DOM.originalInput.__tagify,this.dropdown.hide(!0),this.removeAllCustomListeners(),clearTimeout(this.dropdownHide__bindEventsTimeout),clearInterval(this.listeners.main.originalInputValueObserverInterval)},loadOriginalValues:function(t){var e,n=this.settings;if(this.state.blockChangeEvent=!0,void 0===t){var i=this.getPersistedData("value");t=i&&!this.DOM.originalInput.value?i:n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value}if(this.removeAllTags(),t)if("mix"==n.mode)this.parseMixTags(t),(e=this.DOM.input.lastChild)&&"BR"==e.tagName||this.DOM.input.insertAdjacentHTML("beforeend","
");else{try{zt(JSON.parse(t),Array)&&(t=JSON.parse(t))}catch(t){}this.addTags(t,!0).forEach((function(t){return t&&t.classList.add(n.classNames.tagNoAnimation)}))}else this.postUpdate();this.state.lastOriginalValueReported=n.mixMode.integrated?"":this.DOM.originalInput.value},cloneEvent:function(t){var e={};for(var n in t)"path"!=n&&(e[n]=t[n]);return e},loading:function(t){return this.state.isLoading=t,this.DOM.scope.classList[t?"add":"remove"](this.settings.classNames.scopeLoading),this},tagLoading:function(t,e){return t&&t.classList[e?"add":"remove"](this.settings.classNames.tagLoading),this},toggleClass:function(t,e){"string"==typeof t&&this.DOM.scope.classList.toggle(t,e)},toggleScopeValidation:function(t){var e=!0===t||void 0===t;!this.settings.required&&t&&t===this.TEXTS.empty&&(e=!0),this.toggleClass(this.settings.classNames.tagInvalid,!e),this.DOM.scope.title=e?"":t},toggleFocusClass:function(t){this.toggleClass(this.settings.classNames.focus,!!t)},setPlaceholder:function(t){var e=this;["data","aria"].forEach((function(n){return e.DOM.input.setAttribute("".concat(n,"-placeholder"),t)}))},triggerChangeEvent:function(){if(!this.settings.mixMode.integrated){var t=this.DOM.originalInput,e=this.state.lastOriginalValueReported!==t.value,n=new CustomEvent("change",{bubbles:!0});e&&(this.state.lastOriginalValueReported=t.value,n.simulated=!0,t._valueTracker&&t._valueTracker.setValue(Math.random()),t.dispatchEvent(n),this.trigger("change",this.state.lastOriginalValueReported),t.value=this.state.lastOriginalValueReported)}},events:$t,fixFirefoxLastTagNoCaret:function(){},setRangeAtStartEnd:function(t,e){if(e){t="number"==typeof t?t:!!t,e=e.lastChild||e;var n=document.getSelection();if(zt(n.focusNode,Element)&&!this.DOM.input.contains(n.focusNode))return!0;try{n.rangeCount>=1&&["Start","End"].forEach((function(i){return n.getRangeAt(0)["set"+i](e,t||e.length)}))}catch(t){console.warn(t)}}},insertAfterTag:function(t,e){if(e=e||this.settings.mixMode.insertAfterTag,t&&t.parentNode&&e)return e="string"==typeof e?document.createTextNode(e):e,t.parentNode.insertBefore(e,t.nextSibling),e},editTagChangeDetected:function(t){var e=t.__originalData;for(var n in e)if(!this.dataProps.includes(n)&&t[n]!=e[n])return!0;return!1},getTagTextNode:function(t){return t.querySelector(this.settings.classNames.tagTextSelector)},setTagTextNode:function(t,e){this.getTagTextNode(t).innerHTML=ct(e)},editTag:function(t,e){var n=this;t=t||this.getLastTag(),e=e||{};var i=this.settings,s=this.getTagTextNode(t),a=this.getNodeIndex(t),o=Tt(t),r=this.events.callbacks,l=!0,d="select"==i.mode;if(!d&&this.dropdown.hide(),s){if(!zt(o,Object)||!("editable"in o)||o.editable)return o=Tt(t,{__originalData:ht({},o),__originalHTML:t.cloneNode(!0)}),Tt(o.__originalHTML,o.__originalData),s.setAttribute("contenteditable",!0),t.classList.add(i.classNames.tagEditing),this.events.callbacks.onEditTagFocus.call(this,t),s.addEventListener("click",r.onEditTagClick.bind(this,t)),s.addEventListener("blur",r.onEditTagBlur.bind(this,this.getTagTextNode(t))),s.addEventListener("input",r.onEditTagInput.bind(this,s)),s.addEventListener("paste",r.onEditTagPaste.bind(this,s)),s.addEventListener("keydown",(function(e){return r.onEditTagkeydown.call(n,e,t)})),s.addEventListener("compositionstart",r.onCompositionStart.bind(this)),s.addEventListener("compositionend",r.onCompositionEnd.bind(this)),e.skipValidation||(l=this.editTagToggleValidity(t)),s.originalIsValid=l,this.trigger("edit:start",{tag:t,index:a,data:o,isValid:l}),s.focus(),!d&&this.setRangeAtStartEnd(!1,s),0===i.dropdown.enabled&&!d&&this.dropdown.show(),this.state.hasFocus=!0,this}else st.warn("Cannot find element in Tag template: .",i.classNames.tagTextSelector)},editTagToggleValidity:function(t,e){var n;if(e=e||Tt(t))return(n=!("__isValid"in e)||!0===e.__isValid)||this.removeTagsFromValue(t),this.update(),t.classList.toggle(this.settings.classNames.tagNotAllowed,!n),e.__isValid=n,e.__isValid;st.warn("tag has no data: ",t,e)},onEditTagDone:function(t,e){t=t||this.state.editing.scope,e=e||{};var n,i,s=this.settings,a={tag:t,index:this.getNodeIndex(t),previousData:Tt(t),data:e};this.trigger("edit:beforeUpdate",a,{cloneData:!1}),this.state.editing=!1,delete e.__originalData,delete e.__originalHTML,t&&t.parentNode&&((void 0!==(i=e[s.tagTextProp])?null===(n=(i+="").trim)||void 0===n?void 0:n.call(i):s.tagTextProp in e?void 0:e.value)?(t=this.replaceTag(t,e),this.editTagToggleValidity(t,e),s.a11y.focusableTags?t.focus():"select"!=s.mode&&St(t)):this.removeTags(t)),this.trigger("edit:updated",a),s.dropdown.closeOnSelect&&this.dropdown.hide(),this.settings.keepInvalidTags&&this.reCheckInvalidTags()},replaceTag:function(t,e){e&&""!==e.value&&void 0!==e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&ht(e,this.getInvalidTagAttrs(e,e.__isValid));var n=this.createTagElem(e);return t.parentNode.replaceChild(n,t),this.updateValueByDOMTags(),n},updateValueByDOMTags:function(){var t=this;this.value.length=0;var e=this.settings.classNames,n=[e.tagNotAllowed.split(" ")[0],e.tagHide];[].forEach.call(this.getTagElms(),(function(e){Xt(e.classList).some((function(t){return n.includes(t)}))||t.value.push(Tt(e))})),this.update(),this.dropdown.refilter()},injectAtCaret:function(t,e){var n;if(e=e||(null===(n=this.state.selection)||void 0===n?void 0:n.range),"string"==typeof t&&(t=document.createTextNode(t)),!e&&t)return this.appendMixTags(t),this;var i=bt(t,e);return this.setRangeAtStartEnd(!1,i),this.updateValueByDOMTags(),this.update(),this},input:{set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.settings,i=n.dropdown.closeOnSelect;this.state.inputText=t,e&&(this.DOM.input.innerHTML=ct(""+t),t&&this.toggleClass(n.classNames.empty,!this.DOM.input.innerHTML)),!t&&i&&this.dropdown.hide.bind(this),this.input.autocomplete.suggest.call(this),this.input.validate.call(this)},raw:function(){return this.DOM.input.textContent},validate:function(){var t=!this.state.inputText||!0===this.validateTag({value:this.state.inputText});return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid,!t),t},normalize:function(t,e){var n=t||this.DOM.input,i=[];n.childNodes.forEach((function(t){return 3==t.nodeType&&i.push(t.nodeValue)})),i=i.join("\n");try{i=i.replace(/(?:\r\n|\r|\n)/g,this.settings.delimiters.source.charAt(0))}catch(t){}return i=i.replace(/\s/g," "),(null==e?void 0:e.trim)?this.trim(i):i},autocomplete:{suggest:function(t){if(this.settings.autoComplete.enabled){"object"!=typeof(t=t||{value:""})&&(t={value:t});var e=this.dropdown.getMappedValue(t);if("number"!=typeof e){var n=this.state.inputText.toLowerCase(),i=e.substr(0,this.state.inputText.length).toLowerCase(),s=e.substring(this.state.inputText.length);e&&this.state.inputText&&i==n?(this.DOM.input.setAttribute("data-suggest",s),this.state.inputSuggestion=t):(this.DOM.input.removeAttribute("data-suggest"),delete this.state.inputSuggestion)}}},set:function(t){var e=this.DOM.input.getAttribute("data-suggest"),n=t||(e?this.state.inputText+e:null);return!!n&&("mix"==this.settings.mode?this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix+n)):(this.input.set.call(this,n),this.setRangeAtStartEnd(!1,this.DOM.input)),this.input.autocomplete.suggest.call(this),this.dropdown.hide(),!0)}}},getTagIdx:function(t){return this.value.findIndex((function(e){return e.__tagId==(t||{}).__tagId}))},getNodeIndex:function(t){var e=0;if(t)for(;t=t.previousElementSibling;)e++;return e},getTagElms:function(){for(var t=arguments.length,e=new Array(t),n=0;n=this.settings.maxTags&&this.TEXTS.exceed},setReadonly:function(t,e){var n=this.settings;this.DOM.scope.contains(document.activeElement)&&document.activeElement.blur(),n[e||"readonly"]=t,this.DOM.scope[(t?"set":"remove")+"Attribute"](e||"readonly",!0),this.settings.userInput=!0,this.setContentEditable(!t)},setContentEditable:function(t){this.DOM.input.contentEditable=t,this.DOM.input.tabIndex=t?0:-1},setDisabled:function(t){this.setReadonly(t,"disabled")},normalizeTags:function(t){var e=this,n=this.settings,i=n.whitelist,s=n.delimiters,a=n.mode,o=n.tagTextProp,r=[],l=!!i&&zt(i[0],Object),d=Array.isArray(t),c=d&&t[0].value,u=function(t){return(t+"").split(s).reduce((function(t,n){var i,s=e.trim(n);return s&&t.push((Wt(i={},o,s),Wt(i,"value",s),i)),t}),[])};if("number"==typeof t&&(t=t.toString()),"string"==typeof t){if(!t.trim())return[];t=u(t)}else d&&(t=t.reduce((function(t,n){if(ut(n)){var i=ht({},n);o in i||(o="value"),i[o]=e.trim(i[o]),(i[o]||0===i[o])&&t.push(i)}else if(null!=n&&""!==n&&void 0!==n){var s;(s=t).push.apply(s,Xt(u(n)))}return t}),[]));return l&&!c&&(t.forEach((function(t){var n=r.map((function(t){return t.value})),i=e.dropdown.filterListItems.call(e,t[o],{exact:!0});e.settings.duplicates||(i=i.filter((function(t){return!n.includes(t.value)})));var s=i.length>1?e.getWhitelistItem(t[o],o,i):i[0];s&&zt(s,Object)?r.push(s):"mix"!=a&&(null==t.value&&(t.value=t[o]),r.push(t))})),r.length&&(t=r)),t},parseMixTags:function(t){var e=this,n=this.settings,i=n.mixTagsInterpolator,s=n.duplicates,a=n.transformTag,o=n.enforceWhitelist,r=n.maxTags,l=n.tagTextProp,d=[];t=t.split(i[0]).map((function(t,n){var c,u,h,g=t.split(i[1]),p=g[0],f=d.length==r;try{if(p==+p)throw Error;u=JSON.parse(p)}catch(t){u=e.normalizeTags(p)[0]||{value:p}}if(a.call(e,u),f||!(g.length>1)||o&&!e.isTagWhitelisted(u.value)||!s&&e.isTagDuplicate(u.value)){if(t)return n?i[0]+t:t}else u[c=u[l]?l:"value"]=e.trim(u[c]),h=e.createTagElem(u),d.push(u),h.classList.add(e.settings.classNames.tagNoAnimation),g[0]=h.outerHTML,e.value.push(u);return g.join("")})).join(""),this.DOM.input.innerHTML=t,this.DOM.input.appendChild(document.createTextNode("")),this.DOM.input.normalize();var c=this.getTagElms();return c.forEach((function(t,e){return Tt(t,d[e])})),this.update({withoutChangeEvent:!0}),Et(c,this.state.hasFocus),t},replaceTextWithNode:function(t,e){if(this.state.tag||e){e=e||this.state.tag.prefix+this.state.tag.value;var n,i,s=this.state.selection||window.getSelection(),a=s.anchorNode,o=this.state.tag.delimiters?this.state.tag.delimiters.length:0;return a.splitText(s.anchorOffset-o),-1==(n=a.nodeValue.lastIndexOf(e))||(i=a.splitText(n),t&&a.parentNode.replaceChild(t,i)),!0}},prepareNewTagNode:function(t,e){e=e||{};var n=this.settings,i=[],s={},a=Object.assign({},t,{value:t.value+""});if(t=Object.assign({},a),n.transformTag.call(this,t),t.__isValid=this.hasMaxTags()||this.validateTag(t),!0!==t.__isValid){if(e.skipInvalid)return;if(ht(s,this.getInvalidTagAttrs(t,t.__isValid),{__preInvalidData:a}),t.__isValid==this.TEXTS.duplicate&&this.flashTag(this.getTagElmByValue(t.value)),!n.createInvalidTags)return void i.push(t.value)}return"readonly"in t&&(t.readonly?s["aria-readonly"]=!0:delete t.readonly),{tagElm:this.createTagElem(t,s),tagData:t,aggregatedInvalidInput:i}},postProcessNewTagNode:function(t,e){var n=this,i=this.settings,s=e.__isValid;s&&!0===s?this.value.push(e):(this.trigger("invalid",{data:e,index:this.value.length,tag:t,message:s}),i.keepInvalidTags||setTimeout((function(){return n.removeTags(t,!0)}),1e3)),this.dropdown.position()},selectTag:function(t,e){var n=this;if(!this.settings.enforceWhitelist||this.isTagWhitelisted(e.value)){this.state.actions.selectOption&&setTimeout((function(){return n.setRangeAtStartEnd(!1,n.DOM.input)}));var i=this.getLastTag();return i?this.replaceTag(i,e):this.appendTag(t),this.value[0]=e,this.update(),this.trigger("add",{tag:t,data:e}),[t]}},addEmptyTag:function(t){var e=ht({value:""},t||{}),n=this.createTagElem(e);Tt(n,e),this.appendTag(n),this.editTag(n,{skipValidation:!0}),this.toggleFocusClass(!0)},addTags:function(t,e,n){var i=this,s=[],a=this.settings,o=[],r=document.createDocumentFragment(),l=[];if(!t||0==t.length)return s;switch(t=this.normalizeTags(t),a.mode){case"mix":return this.addMixTags(t);case"select":e=!1,this.removeAllTags()}return this.DOM.input.removeAttribute("style"),t.forEach((function(t){var e=i.prepareNewTagNode(t,{skipInvalid:n||a.skipInvalid});if(e){var d=e.tagElm;if(t=e.tagData,o=e.aggregatedInvalidInput,s.push(d),"select"==a.mode)return i.selectTag(d,t);r.appendChild(d),i.postProcessNewTagNode(d,t),l.push({tagElm:d,tagData:t})}})),this.appendTag(r),l.forEach((function(t){var e=t.tagElm,n=t.tagData;return i.trigger("add",{tag:e,index:i.getTagIdx(n),data:n})})),this.update(),t.length&&e&&(this.input.set.call(this,a.createInvalidTags?"":o.join(a._delimiters)),this.setRangeAtStartEnd(!1,this.DOM.input)),this.dropdown.refilter(),s},addMixTags:function(t){var e=this;if((t=this.normalizeTags(t))[0].prefix||this.state.tag)return this.prefixedTextToTag(t[0]);var n=document.createDocumentFragment();return t.forEach((function(t){var i=e.prepareNewTagNode(t);n.appendChild(i.tagElm),e.insertAfterTag(i.tagElm),e.postProcessNewTagNode(i.tagElm,i.tagData)})),this.appendMixTags(n),n.children},appendMixTags:function(t){var e=!!this.state.selection;e?this.injectAtCaret(t):(this.DOM.input.focus(),(e=this.setStateSelection()).range.setStart(this.DOM.input,e.range.endOffset),e.range.setEnd(this.DOM.input,e.range.endOffset),this.DOM.input.appendChild(t),this.updateValueByDOMTags(),this.update())},prefixedTextToTag:function(t){var e,n,i,s=this,a=this.settings,o=null===(e=this.state.tag)||void 0===e?void 0:e.delimiters;if(t.prefix=t.prefix||this.state.tag?this.state.tag.prefix:(a.pattern.source||a.pattern)[0],i=this.prepareNewTagNode(t),n=i.tagElm,this.replaceTextWithNode(n)||this.DOM.input.appendChild(n),setTimeout((function(){return n.classList.add(s.settings.classNames.tagNoAnimation)}),300),this.update(),!o){var r=this.insertAfterTag(n)||n;setTimeout(St,0,r)}return this.state.tag=null,this.postProcessNewTagNode(n,i.tagData),n},appendTag:function(t){var e=this.DOM,n=e.input;e.scope.insertBefore(t,n)},createTagElem:function(t,e){t.__tagId=mt();var n,i=ht({},t,Kt({value:ct(t.value+"")},e));return function(t){for(var e,n=document.createNodeIterator(t,NodeFilter.SHOW_TEXT,null,!1);e=n.nextNode();)e.textContent.trim()||e.parentNode.removeChild(e)}(n=this.parseTemplate("tag",[i,this])),Tt(n,t),n},reCheckInvalidTags:function(){var t=this,e=this.settings;this.getTagElms(e.classNames.tagNotAllowed).forEach((function(n,i){var s=Tt(n),a=t.hasMaxTags(),o=t.validateTag(s),r=!0===o&&!a;if("select"==e.mode&&t.toggleScopeValidation(o),r)return s=s.__preInvalidData?s.__preInvalidData:{value:s.value},t.replaceTag(n,s);n.title=a||o}))},removeTags:function(t,e,n){var i,s=this,a=this.settings;if(t=t&&zt(t,HTMLElement)?[t]:zt(t,Array)?t:t?[t]:[this.getLastTag()].filter((function(t){return t})),i=t.reduce((function(t,e){e&&"string"==typeof e&&(e=s.getTagElmByValue(e));var n=Tt(e);return e&&n&&!n.readonly&&t.push({node:e,idx:s.getTagIdx(n),data:Tt(e,{__removed:!0})}),t}),[]),n="number"==typeof n?n:this.CSSVars.tagHideTransition,"select"==a.mode&&(n=0,this.input.set.call(this)),1==i.length&&"select"!=a.mode&&i[0].node.classList.contains(a.classNames.tagNotAllowed)&&(e=!0),i.length)return a.hooks.beforeRemoveTag(i,{tagify:this}).then((function(){var t=function(t){t.node.parentNode&&(t.node.parentNode.removeChild(t.node),e?a.keepInvalidTags&&this.trigger("remove",{tag:t.node,index:t.idx}):(this.trigger("remove",{tag:t.node,index:t.idx,data:t.data}),this.dropdown.refilter(),this.dropdown.position(),this.DOM.input.normalize(),a.keepInvalidTags&&this.reCheckInvalidTags()))};n&&n>10&&1==i.length?function(e){e.node.style.width=parseFloat(window.getComputedStyle(e.node).width)+"px",document.body.clientTop,e.node.classList.add(a.classNames.tagHide),setTimeout(t.bind(this),n,e)}.call(s,i[0]):i.forEach(t.bind(s)),e||(s.removeTagsFromValue(i.map((function(t){return t.node}))),s.update(),"select"==a.mode&&a.userInput&&s.setContentEditable(!0))})).catch((function(t){}))},removeTagsFromDOM:function(){this.getTagElms().forEach((function(t){return t.remove()}))},removeTagsFromValue:function(t){var e=this;(t=Array.isArray(t)?t:[t]).forEach((function(t){var n=Tt(t),i=e.getTagIdx(n);i>-1&&e.value.splice(i,1)}))},removeAllTags:function(t){var e=this;t=t||{},this.value=[],"mix"==this.settings.mode?this.DOM.input.innerHTML="":this.removeTagsFromDOM(),this.dropdown.refilter(),this.dropdown.position(),this.state.dropdown.visible&&setTimeout((function(){e.DOM.input.focus()})),"select"==this.settings.mode&&(this.input.set.call(this),this.settings.userInput&&this.setContentEditable(!0)),this.update(t)},postUpdate:function(){this.state.blockChangeEvent=!1;var t,e,n=this.settings,i=n.classNames,s="mix"==n.mode?n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value.trim():this.value.length+this.input.raw.call(this).length;this.toggleClass(i.hasMaxTags,this.value.length>=n.maxTags),this.toggleClass(i.hasNoTags,!this.value.length),this.toggleClass(i.empty,!s),"select"==n.mode&&this.toggleScopeValidation(null===(e=this.value)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.__isValid)},setOriginalInputValue:function(t){var e=this.DOM.originalInput;this.settings.mixMode.integrated||(e.value=t,e.tagifyValue=e.value,this.setPersistedData(t,"value"))},update:function(t){clearTimeout(this.debouncedUpdateTimeout),this.debouncedUpdateTimeout=setTimeout(function(){var e=this.getInputValue();this.setOriginalInputValue(e),this.settings.onChangeAfterBlur&&(t||{}).withoutChangeEvent||this.state.blockChangeEvent||this.triggerChangeEvent(),this.postUpdate()}.bind(this),100),this.events.bindOriginaInputListener.call(this,100)},getInputValue:function(){var t=this.getCleanValue();return"mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):""},getCleanValue:function(t){return ot(t||this.value,this.dataProps)},getMixedTagsAsString:function(){var t="",e=this,n=this.settings,i=n.originalInputValueFormat||JSON.stringify,s=n.mixTagsInterpolator;return function n(a){a.childNodes.forEach((function(a){if(1==a.nodeType){var o=Tt(a);if("BR"==a.tagName&&(t+="\r\n"),o&&vt.call(e,a)){if(o.__removed)return;t+=s[0]+i(rt(o,e.dataProps))+s[1]}else a.getAttribute("style")||["B","I","U"].includes(a.tagName)?t+=a.textContent:"DIV"!=a.tagName&&"P"!=a.tagName||(t+="\r\n",n(a))}else t+=a.textContent}))}(this.DOM.input),t}},Jt.prototype.removeTag=Jt.prototype.removeTags;const Zt="radio-field-input",te="multi-select-field-input";class ee{#U;#W;#z;#K;#X;#J;#Q;#G;#Y;#Z;#tt;#et;#nt;#it;#st;#at;#ot=null;#rt;#lt;#dt;#ct;#ut;#ht=null;#gt=null;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g,p,f,m,v){this.#U=t,this.#Z=o,this.#W=r,this.#z=l,this.#K=d,this.#X=c,this.#nt=u,this.#it=h,this.#st=v,this.#rt=e,this.#lt=n,this.#dt=i,this.#ct=s,this.#ut=a,this.#at=this.#st.innerHTML,this.#Y=g,this.#J=p,this.#Q=f,this.#G=m,this.#et=!1,this.#tt=!1,this.isAsync()&&(this.clearOptionElements(),this.loadOptionsDataSourceValues()),this.#W.addEventListener("input",(t=>{this.isAsync()?this.handleOptionsDataSource(t.target).then((()=>{this.filterItemsSearch(t)})):this.filterItemsSearch(t)})),this.#Y.addEventListener("click",(()=>{this.setFiltered(!1)})),this.#J.addEventListener("click",(()=>{this.isAsync()&&(this.#W.value="",this.clearOptionElements()),this.toggleVisibility()})),"radio-field-input"===this.#z&&this.#X.forEach((t=>{t.addEventListener("change",(()=>{this.scrollListToTop()}))}))}isAsync(){return null!==this.#rt&&void 0!==this.#rt}isEngaged(){return this.#et}isFiltered(){return this.#tt}setFiltered(t){this.#tt!==t&&(this.#tt=t,t?(this.#Y.style.removeProperty("display"),this.#st.style.removeProperty("display")):(this.#W.value="",this.#Y.style.display="none",this.#st.style.display="none",this.#nt.style.display="none",this.#pt()))}toggleVisibility(){this.isEngaged()?(this.#et=!1,this.#U.classList.remove("engaged"),this.setFiltered(!1),this.#J.setAttribute("aria-expanded","false"),this.#Q.style.removeProperty("display"),this.#G.style.display="none",this.#it.style.display="none"):(this.#et=!0,this.#U.classList.add("engaged"),this.#J.setAttribute("aria-expanded","true"),this.#Q.style.display="none",this.#G.style.removeProperty("display"),this.isAsync()&&this.#it.style.removeProperty("display"))}#ft(t){this.#U.ownerDocument.defaultView.clearTimeout(this.#ot),this.#ot=this.#U.ownerDocument.defaultView.setTimeout((()=>{this.#st.textContent="",this.#U.ownerDocument.defaultView.requestAnimationFrame((()=>{this.#st.textContent=t}))}),500)}#mt(t){const e=$(this.#at,t);this.#ft(e)}loadOptionsDataSourceValues(){return new Promise(((t,e)=>{("string"==typeof this.#ut||this.#ut instanceof String||this.#ut instanceof Array)&&this.fetchDataSource(new Map([[this.#dt,this.#ut]])).then((n=>{n&&n instanceof Array?(n.forEach((t=>{this.#K.append(this.optionsDataSourceDataToElement(t,!0))})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),t()):e()}))})).catch((t=>{if(t instanceof Error)throw t}))}handleOptionsDataSource(t){return this.#gt instanceof AbortController&&this.#gt.abort(),this.#gt=new AbortController,void 0!==this.#ht&&(clearTimeout(this.#ht),this.#ht=void 0),new Promise(((e,n)=>{if(t.value.length{const i=t.value;return this.fetchDataSource(new Map([[this.#lt,i]]),this.#gt.signal).then((t=>{t&&t instanceof Array?(this.clearOptionElements(),t.forEach((t=>{const e=this.optionsDataSourceDataToElement(t);this.#K.querySelector(`[data-value='${e.dataset.value}'][data-display='${e.dataset.display}']`)||this.#K.append(e)})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),e()):n(new Error("Invalid data received from data source fetch"))}))}),200)})).catch((t=>{if(t instanceof Error)throw t}))}fetchDataSource(t,e=null){const n=new URL(this.#rt,document.location);t.forEach(((t,e)=>{t instanceof Array?t.forEach((t=>{n.searchParams.append(`${e}[]`,t)})):n.searchParams.set(e,t)}));const i={};return e instanceof AbortController&&(i.signal=e.signal),fetch(n,i).then((t=>t.json())).catch((()=>{}))}clearOptionElements(t=!1){Array.from(this.#K.children).forEach((e=>{if(t)this.#K.removeChild(e);else{const t=e.querySelector("input");t&&t.checked||this.#K.removeChild(e)}})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item")}optionsDataSourceDataToElement(t,e=!1){const n=Math.random().toString(16).slice(2),i=document.createElement("input");i.id=n,i.value=t.value;const s=document.createElement("label");let a;switch(s.htmlFor=n,this.#z){case Zt:a=document.createElement("div"),a.className="c-field-radio__item c-field--has-option-filter__item",i.type="radio",i.name=this.#U.dataset.ilUiInputName,s.innerText=t.display,a.append(i),a.append(s);break;case te:a=document.createElement("li"),a.className="c-field--has-option-filter__item",i.type="checkbox",i.name=`${this.#U.dataset.ilUiInputName}[]`;const e=document.createElement("span");e.className="c-field-multiselect__label-text",e.innerText=t.display,s.append(i),s.append(e),a.append(s);break;default:throw new Error(`Unsupported list type '${this.#z}' received`)}return i.checked=e,a.dataset.value=t.value,a.dataset.display=t.display,a.dataset.searchBy=t.searchBy,a}filterItemsSearch(t){const e=t.target.value.toLowerCase();this.setFiltered(!!e);let n=0,i=!1;this.#X.forEach((t=>{t.textContent.toLowerCase().includes(e)?(n+=1,i=!0,ne(t)):function(t){t.style.display="none"}(t)})),this.#mt(n.toString()),""!==e&&!1===i?this.#nt.style.removeProperty("display"):(""===e||i)&&(this.#nt.style.display="none")}#pt(){this.#X.forEach((t=>ne(t)))}scrollListToTop(){this.#Z.scrollTo({top:0,behavior:"smooth"})}}function ne(t){t.style.removeProperty("display")}class ie{#V=new Map;init(t,e,n,i,s,a){if(void 0===t)throw new TypeError("During init of an InputHasOptionFilter an undefined element was passed to the factory.");if(this.#V.has(t.id))throw new Error(`A InputHasOptionFilter with id '${t.id}' has already been initialized.`);const o=t,r=o.querySelector(".c-input--has-option-filter__field"),l=o.querySelector(".c-input--has-option-filter__search-input input"),d=o.getAttribute("data-il-ui-component"),c=o.querySelector(".c-field--has-option-filter__list"),u=c.querySelectorAll(".c-field--has-option-filter__item"),h=o.querySelector(".message-no-match"),g=o.querySelector(".message-async-start-search"),p=o.querySelector('.c-input--has-option-filter__synopsis [role="status"]'),f=o.querySelector(".c-input--has-option-filter__clear-search"),m=o.querySelector(".c-input--has-option-filter__visibility-toggle"),v=m.querySelector(".text-expand"),y=m.querySelector(".text-collapse"),w=new ee(t,""===e?null:e,n,i,s,JSON.parse(a),r,l,d,c,u,h,g,f,m,v,y,p);return this.#V.set(t.id,w),w}get(t){return this.#V.has(t)?this.#V.get(t):null}}var se;e.UI=e.UI||{},e.UI.Input=e.UI.Input||{},(se=e.UI.Input).textarea=new o,se.mustacheVariables={init:(t,e)=>function(t,e){e.querySelectorAll(".c-input--has-mustache-variables__definitions > li > a").forEach((e=>{const n=function(t){const e=t.textContent.match(/^\s*\{\{([^}]+)\}\}\s*$/);return e?e[1].trim():null}(e);e.addEventListener("click",(()=>{t.insertCharactersAroundSelection(`{{${n}}}`,"")}))}))}(t,e)},se.markdown=new y,se.optionFilter=new ie,se.treeSelect=new Z(new tt(t),e.UI.menu.drilldown,{txt:t=>e.Language.txt(t)},n),se.tagInput=se.tag||{},se.tagInput.init=(t,e,n,i,s)=>Yt(Jt,t,e,n,i,s)}($,il,document); diff --git a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js index 6d1178c5e9c9..04025aecde60 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js +++ b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js @@ -25,6 +25,20 @@ import sprintf from '../../../../Core/src/sprintf.js'; */ const A11Y_DEBOUNCE_DELAY = 500; +const OPTIONS_SOURCE_TRIGGER_TIMEOUT = 200; + +const INPUT_TYPE = { + radio: 'radio-field-input', + multiSelect: 'multi-select-field-input', +}; + +/** + * @typedef {Object} DataSourceResponseData + * @property {string} value + * @property {string} display + * @property {string} searchBy + */ + /** * Option Filter Context for inputs like MultiSelect, Radio etc. * JS features: @@ -103,6 +117,11 @@ export default class OptionFilter { */ #messageNoMatch; + /** + * @type {HTMLDivElement} + */ + #messageAsyncStartSearch; + /** * @type {HTMLDivElement} */ @@ -118,15 +137,56 @@ export default class OptionFilter { */ #timeoutId = null; + /** + * @type {undefined|null|string} + */ + #optionsDataSource; + + /** + * @type {string} + */ + #optionsDataSourceToken; + + /** + * @type {string} + */ + #optionsDataSourceDisplayValueToken; + + /** + * @type {number} + */ + #optionsDataSourceSuggestionStart; + + /** + * @type {string|Array|null} + */ + #selectedValue; + + /** + * @type {null|number} + */ + #optionsDataSourceTimeoutId = null; + + /** + * @type {null|AbortController} + */ + #optionsDataSourceAbortController = null; + /** * * @param {HTMLElement} inputFieldContext + * @param {null|string} optionsDataSource + * @param {string} optionsDataSourceToken + * @param {string} optionsDataSourceDisplayValueToken + * @param {number} optionsDataSourceSuggestionStart + * @param {string|Array|null} selectedValue * @param {HTMLDivElement} scrollContainer * @param {HTMLInputElement} searchbar * @param {string} listType * @param {HTMLElement} itemList * @param {NodeList} items * @param {HTMLDivElement} messageNoMatch + * @param {HTMLDivElement} messageAsyncStartSearch * @param {HTMLButtonElement} clearFilterButton * @param {HTMLButtonElement} engageDisengageToggle * @param {HTMLSpanElement} toggleExpandText @@ -135,12 +195,18 @@ export default class OptionFilter { */ constructor( inputFieldContext, + optionsDataSource, + optionsDataSourceToken, + optionsDataSourceDisplayValueToken, + optionsDataSourceSuggestionStart, + selectedValue, scrollContainer, searchbar, listType, itemList, items, messageNoMatch, + messageAsyncStartSearch, clearFilterButton, engageDisengageToggle, toggleExpandText, @@ -155,8 +221,16 @@ export default class OptionFilter { this.#itemList = itemList; this.#items = items; this.#messageNoMatch = messageNoMatch; + this.#messageAsyncStartSearch = messageAsyncStartSearch; this.#resultCountDisplay = resultCountDisplay; + /* Data source related */ + this.#optionsDataSource = optionsDataSource; + this.#optionsDataSourceToken = optionsDataSourceToken; + this.#optionsDataSourceDisplayValueToken = optionsDataSourceDisplayValueToken; + this.#optionsDataSourceSuggestionStart = optionsDataSourceSuggestionStart; + this.#selectedValue = selectedValue; + /* translation string from php render */ this.#resultCountTranslationString = this.#resultCountDisplay.innerHTML; @@ -170,14 +244,29 @@ export default class OptionFilter { this.#isEngaged = false; this.#isFiltered = false; + if (this.isAsync()) { + this.clearOptionElements(); + this.loadOptionsDataSourceValues(); + } + /* Event Listeners */ this.#searchbar.addEventListener('input', (event) => { - this.filterItemsSearch(event); + if (this.isAsync()) { + this.handleOptionsDataSource(event.target).then(() => { + this.filterItemsSearch(event); + }); + } else { + this.filterItemsSearch(event); + } }); this.#clearFilterButton.addEventListener('click', () => { this.setFiltered(false); }); this.#engageDisengageToggle.addEventListener('click', () => { + if (this.isAsync()) { + this.#searchbar.value = ''; + this.clearOptionElements(); + } this.toggleVisibility(); }); if (this.#listType === 'radio-field-input') { @@ -189,6 +278,10 @@ export default class OptionFilter { } } + isAsync() { + return this.#optionsDataSource !== null && this.#optionsDataSource !== undefined; + } + /** * Getter for #isEngaged state * @returns {boolean} @@ -232,12 +325,16 @@ export default class OptionFilter { this.#engageDisengageToggle.setAttribute('aria-expanded', 'false'); this.#toggleExpandText.style.removeProperty('display'); this.#toggleCollapseText.style.display = 'none'; + this.#messageAsyncStartSearch.style.display = 'none'; } else { this.#isEngaged = true; this.#inputFieldContext.classList.add('engaged'); this.#engageDisengageToggle.setAttribute('aria-expanded', 'true'); this.#toggleExpandText.style.display = 'none'; this.#toggleCollapseText.style.removeProperty('display'); + if (this.isAsync()) { + this.#messageAsyncStartSearch.style.removeProperty('display'); + } } } @@ -262,6 +359,204 @@ export default class OptionFilter { this.#debouncedUpdateA11y(resultText); } + /** + * @returns {Promise} + */ + loadOptionsDataSourceValues() { + return new Promise((resolve, reject) => { + if (typeof this.#selectedValue === 'string' || this.#selectedValue instanceof String || this.#selectedValue instanceof Array) { + this.fetchDataSource( + new Map([[this.#optionsDataSourceDisplayValueToken, this.#selectedValue]]), + ).then((data) => { + if (!data || !(data instanceof Array)) { + reject(); + return; + } + + data.forEach((responseData) => { + this.#itemList.append(this.optionsDataSourceDataToElement(responseData, true)); + }); + + this.#items = this.#itemList.querySelectorAll('.c-field--has-option-filter__item'); + resolve(); + }); + } + }).catch((error) => { + if (error instanceof Error) { + throw error; + } + }); + } + + /** + * @param {HTMLInputElement} input + * @return {Promise} + */ + handleOptionsDataSource(input) { + if (this.#optionsDataSourceAbortController instanceof AbortController) { + this.#optionsDataSourceAbortController.abort(); + } + this.#optionsDataSourceAbortController = new AbortController(); + + if (this.#optionsDataSourceTimeoutId !== undefined) { + clearTimeout(this.#optionsDataSourceTimeoutId); + this.#optionsDataSourceTimeoutId = undefined; + } + + return new Promise((resolve, reject) => { + if (input.value.length < this.#optionsDataSourceSuggestionStart) { + this.#messageAsyncStartSearch.style.removeProperty('display'); + this.clearOptionElements(); + return; + } + + this.#messageAsyncStartSearch.style.display = 'none'; + this.#optionsDataSourceTimeoutId = setTimeout( + () => { + const searchTerm = input.value; + + return this.fetchDataSource( + new Map([[this.#optionsDataSourceToken, searchTerm]]), + this.#optionsDataSourceAbortController.signal, + ) + .then((data) => { + if (!data || !(data instanceof Array)) { + reject(new Error('Invalid data received from data source fetch')); + return; + } + + this.clearOptionElements(); + + data.forEach((responseData) => { + const element = this.optionsDataSourceDataToElement(responseData); + const existingElement = this.#itemList.querySelector( + `[data-value='${element.dataset.value}'][data-display='${element.dataset.display}']`, + ); + + if (!existingElement) { + this.#itemList.append(element); + } + }); + + this.#items = this.#itemList.querySelectorAll('.c-field--has-option-filter__item'); + resolve(); + }); + }, + OPTIONS_SOURCE_TRIGGER_TIMEOUT, + ); + }).catch((error) => { + if (error instanceof Error) { + throw error; + } + }); + } + + /** + * @param {Map>} queryParameters + * @param {AbortSignal} abortController + * @returns {Promise>} + */ + fetchDataSource(queryParameters, abortController = null) { + const url = new URL(this.#optionsDataSource, document.location); + + queryParameters.forEach((value, key) => { + if (value instanceof Array) { + value.forEach((arrayValue) => { + url.searchParams.append(`${key}[]`, arrayValue); + }); + } else { + url.searchParams.set(key, value); + } + }); + + const init = {}; + + if (abortController instanceof AbortController) { + init.signal = abortController.signal; + } + + return fetch( + url, + init, + ) + .then((response) => response.json()) + .catch(() => { + }); + } + + clearOptionElements(removeSelected = false) { + Array.from(this.#itemList.children).forEach((child) => { + if (removeSelected) { + this.#itemList.removeChild(child); + } else { + const input = child.querySelector('input'); + if (!input || !input.checked) { + this.#itemList.removeChild(child); + } + } + }); + + this.#items = this.#itemList.querySelectorAll('.c-field--has-option-filter__item'); + } + + /** + * @param {DataSourceResponseData} data + * @param {boolean} selected + * @return {HTMLDivElement|HTMLLIElement} + */ + optionsDataSourceDataToElement(data, selected = false) { + const id = Math.random().toString(16).slice(2); + + const input = document.createElement('input'); + input.id = id; + input.value = data.value; + + const label = document.createElement('label'); + label.htmlFor = id; + + let element; + + switch (this.#listType) { + case INPUT_TYPE.radio: + element = document.createElement('div'); + element.className = 'c-field-radio__item c-field--has-option-filter__item'; + + input.type = 'radio'; + input.name = this.#inputFieldContext.dataset.ilUiInputName; + + label.innerText = data.display; + + element.append(input); + element.append(label); + break; + case INPUT_TYPE.multiSelect: + element = document.createElement('li'); + element.className = 'c-field--has-option-filter__item'; + + input.type = 'checkbox'; + input.name = `${this.#inputFieldContext.dataset.ilUiInputName}[]`; + + const labelText = document.createElement('span'); + labelText.className = 'c-field-multiselect__label-text'; + labelText.innerText = data.display; + + label.append(input); + label.append(labelText); + element.append(label); + break; + default: + throw new Error(`Unsupported list type '${this.#listType}' received`); + } + + input.checked = selected; + + element.dataset.value = data.value; + element.dataset.display = data.display; + element.dataset.searchBy = data.searchBy; + + return element; + } + /** * Filter items based on search input * @param {Event} event diff --git a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js index db03084f81bb..658d48deaa62 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js +++ b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js @@ -23,10 +23,22 @@ export default class OptionFilterFactory { /** * @param {HTMLElement} inputFieldWithOptionFilter + * @param {string} optionsDataSource + * @param {string} optionsDataSourceToken + * @param {string} optionsDataSourceDisplayValueToken + * @param {number} optionsDataSourceSuggestionStart + * @param {string} selectedValue * @return {OptionFilter} * @throws {Error} if the input was already initialized. */ - init(inputFieldWithOptionFilter) { + init( + inputFieldWithOptionFilter, + optionsDataSource, + optionsDataSourceToken, + optionsDataSourceDisplayValueToken, + optionsDataSourceSuggestionStart, + selectedValue, + ) { if (inputFieldWithOptionFilter === undefined) { throw new TypeError('During init of an InputHasOptionFilter an undefined element was passed to the factory.'); } @@ -42,6 +54,7 @@ export default class OptionFilterFactory { const itemList = inputFieldContext.querySelector('.c-field--has-option-filter__list'); const items = itemList.querySelectorAll('.c-field--has-option-filter__item'); const messageNoMatch = inputFieldContext.querySelector('.message-no-match'); + const messageAsyncStartSearch = inputFieldContext.querySelector('.message-async-start-search'); const resultCountDisplay = inputFieldContext.querySelector('.c-input--has-option-filter__synopsis [role="status"]'); /* Buttons */ @@ -52,12 +65,18 @@ export default class OptionFilterFactory { const instance = new OptionFilter( inputFieldWithOptionFilter, + optionsDataSource === '' ? null : optionsDataSource, + optionsDataSourceToken, + optionsDataSourceDisplayValueToken, + optionsDataSourceSuggestionStart, + JSON.parse(selectedValue), scrollContainer, searchbar, listType, itemList, items, messageNoMatch, + messageAsyncStartSearch, clearFilterButton, engageDisengageToggle, toggleExpandText, diff --git a/components/ILIAS/UI/src/Component/Input/Field/HasOptionFilter.php b/components/ILIAS/UI/src/Component/Input/Field/HasOptionFilter.php index 533cb230c082..7b62677e8134 100644 --- a/components/ILIAS/UI/src/Component/Input/Field/HasOptionFilter.php +++ b/components/ILIAS/UI/src/Component/Input/Field/HasOptionFilter.php @@ -27,8 +27,16 @@ */ interface HasOptionFilter extends FormInput { + public const int OPTIONS_DATA_SOURCE_SUGGESTION_START = 3; + /** * Adds a collapsed view and a searchbar to the field. */ - public function withHasOptionFilter(bool $has_option_filter = true): static; + public function withHasOptionFilter( + bool $has_option_filter = true, + string $options_data_source = '', + string $options_data_source_token = 'term', + string $options_data_source_display_value_token = 'display_values', + int $options_data_source_suggestion_start = self::OPTIONS_DATA_SOURCE_SUGGESTION_START + ): static; } diff --git a/components/ILIAS/UI/src/Implementation/Component/Input/Field/HasOptionFilter.php b/components/ILIAS/UI/src/Implementation/Component/Input/Field/HasOptionFilter.php index ee4b9aa1c3f1..2f4afbb02263 100644 --- a/components/ILIAS/UI/src/Implementation/Component/Input/Field/HasOptionFilter.php +++ b/components/ILIAS/UI/src/Implementation/Component/Input/Field/HasOptionFilter.php @@ -20,20 +20,41 @@ namespace ILIAS\UI\Implementation\Component\Input\Field; +use Exception; + /** * @see HasOptionFilterInternal for interface definition */ trait HasOptionFilter { protected bool $has_option_filter = false; + protected string $options_data_source = ''; + protected string $options_data_source_token = 'term'; + protected string $options_data_source_display_value_token = 'display_values'; + protected int $options_data_source_suggestion_start = self::OPTIONS_DATA_SOURCE_SUGGESTION_START; /** @var array (value => label) */ protected array $options = []; - public function withHasOptionFilter(bool $has_option_filter = true): static - { + /** + * @throws Exception + */ + public function withHasOptionFilter( + bool $has_option_filter = true, + string $options_data_source = '', + string $options_data_source_token = 'term', + string $options_data_source_display_value_token = 'display_values', + int $options_data_source_suggestion_start = self::OPTIONS_DATA_SOURCE_SUGGESTION_START + ): static { + if ($this->getOptions() !== [] && $options_data_source) { + throw new Exception('Input should not have data source when using options'); + } $clone = clone $this; $clone->has_option_filter = $has_option_filter; + $clone->options_data_source = $options_data_source; + $clone->options_data_source_token = $options_data_source_token; + $clone->options_data_source_display_value_token = $options_data_source_display_value_token; + $clone->options_data_source_suggestion_start = $options_data_source_suggestion_start; return $clone; } @@ -42,6 +63,26 @@ public function hasOptionFilter(): bool return $this->has_option_filter; } + public function getOptionsDataSource(): string + { + return $this->options_data_source; + } + + public function getOptionsDataSourceToken(): string + { + return $this->options_data_source_token; + } + + public function getOptionsDataSourceDisplayValueToken(): string + { + return $this->options_data_source_display_value_token; + } + + public function getOptionsDataSourceSuggestionStart(): int + { + return $this->options_data_source_suggestion_start; + } + public function getOptions(): array { return $this->options; diff --git a/components/ILIAS/UI/src/Implementation/Component/Input/Field/HasOptionFilterInternal.php b/components/ILIAS/UI/src/Implementation/Component/Input/Field/HasOptionFilterInternal.php index f89d529fa6a1..47a3a3b186af 100644 --- a/components/ILIAS/UI/src/Implementation/Component/Input/Field/HasOptionFilterInternal.php +++ b/components/ILIAS/UI/src/Implementation/Component/Input/Field/HasOptionFilterInternal.php @@ -33,4 +33,12 @@ interface HasOptionFilterInternal extends C\Field\HasOptionFilter * @return array (value => label) */ public function getOptions(): array; + + public function getOptionsDataSource(): string; + + public function getOptionsDataSourceToken(): string; + + public function getOptionsDataSourceDisplayValueToken(): string; + + public function getOptionsDataSourceSuggestionStart(): int; } diff --git a/components/ILIAS/UI/src/Implementation/Component/Input/Field/MultiSelect.php b/components/ILIAS/UI/src/Implementation/Component/Input/Field/MultiSelect.php index 95f3012b2edd..bd6d2e616e65 100755 --- a/components/ILIAS/UI/src/Implementation/Component/Input/Field/MultiSelect.php +++ b/components/ILIAS/UI/src/Implementation/Component/Input/Field/MultiSelect.php @@ -20,6 +20,7 @@ namespace ILIAS\UI\Implementation\Component\Input\Field; +use Exception; use ILIAS\UI\Component as C; use ILIAS\Data\Factory as DataFactory; use ILIAS\Refinery\Constraint; @@ -34,6 +35,7 @@ class MultiSelect extends FormInput implements C\Input\Field\MultiSelect, HasOpt /** * @param array $options + * @throws Exception */ public function __construct( DataFactory $data_factory, @@ -43,6 +45,11 @@ public function __construct( ?string $byline ) { parent::__construct($data_factory, $refinery, $label, $byline); + + if ($options !== [] && $this->getOptionsDataSource()) { + throw new Exception('Input should not have options when using data source'); + } + $this->options = $options; } @@ -55,6 +62,10 @@ protected function isClientSideValueOk($value): bool return true; } if (is_array($value)) { + if ($this->getOptionsDataSource()) { + return true; + } + foreach ($value as $v) { if (!array_key_exists($v, $this->options)) { return false; diff --git a/components/ILIAS/UI/src/Implementation/Component/Input/Field/Radio.php b/components/ILIAS/UI/src/Implementation/Component/Input/Field/Radio.php index ec799417d204..9d9a549d96eb 100755 --- a/components/ILIAS/UI/src/Implementation/Component/Input/Field/Radio.php +++ b/components/ILIAS/UI/src/Implementation/Component/Input/Field/Radio.php @@ -20,6 +20,7 @@ namespace ILIAS\UI\Implementation\Component\Input\Field; +use Exception; use ILIAS\UI\Component as C; use ILIAS\UI\Component\Input\InputData; use ILIAS\UI\Implementation\Component\JavaScriptBindable; @@ -47,7 +48,15 @@ class Radio extends FormInput implements C\Input\Field\Radio, HasOptionFilterInt */ protected function isClientSideValueOk($value): bool { - return ($value === null || array_key_exists($value, $this->getOptions())); + if ($value === null) { + return true; + } + + if ($this->getOptionsDataSource()) { + return true; + } + + return array_key_exists($value, $this->getOptions()); } /** @@ -66,9 +75,14 @@ protected function getConstraintForRequirement(): ?Constraint /** * @inheritdoc + * @throws Exception */ public function withOption(string $value, string $label, ?string $byline = null): C\Input\Field\Radio { + if ($this->getOptionsDataSource()) { + throw new Exception('Input should not have options when using data source'); + } + $clone = clone $this; $clone->options[$value] = $label; if (!is_null($byline)) { diff --git a/components/ILIAS/UI/src/Implementation/Component/Input/Field/Renderer.php b/components/ILIAS/UI/src/Implementation/Component/Input/Field/Renderer.php index 7c731d09bfd6..b1e0adceb5ab 100755 --- a/components/ILIAS/UI/src/Implementation/Component/Input/Field/Renderer.php +++ b/components/ILIAS/UI/src/Implementation/Component/Input/Field/Renderer.php @@ -1334,6 +1334,10 @@ protected function renderOptionFilter(string $input_html, F\HasOptionFilterInter $option_filter_template->setVariable('SEARCH_LABEL', $this->txt("ui_field_option_filter_search_in")); $option_filter_template->setVariable('SCREEN_READER_HINT', $this->txt('ui_field_option_filter_screen_reader_hint')); $option_filter_template->setVariable('NO_MATCH', $this->txt('ui_field_option_filter_no_match')); + $option_filter_template->setVariable('ASYNC_START_SEARCH', sprintf( + $this->txt('ui_field_option_filter_async_start_search'), + $component->getOptionsDataSourceSuggestionStart() + )); $option_filter_template->setVariable('OPTIONS_SHOWN', $this->txt('ui_field_option_filter_options_shown')); $expand_icon = $default_renderer->render($this->getUIFactory()->symbol()->glyph()->expand()); @@ -1345,8 +1349,17 @@ protected function renderOptionFilter(string $input_html, F\HasOptionFilterInter $remove_icon = $default_renderer->render($this->getUIFactory()->symbol()->glyph()->remove()); $option_filter_template->setVariable('CLEAR_SEARCH_BTN', $remove_icon . $this->txt('ui_field_option_filter_clear_search')); + $json_encoded_value = json_encode($component->getValue(), JSON_THROW_ON_ERROR); + $component = $component->withAdditionalOnLoadCode( - static fn($id): string => "il.UI.Input.optionFilter.init(document.getElementById('$id'));", + static fn($id): string => "il.UI.Input.optionFilter.init( + document.getElementById('$id'), + '{$component->getOptionsDataSource()}', + '{$component->getOptionsDataSourceToken()}', + '{$component->getOptionsDataSourceDisplayValueToken()}', + {$component->getOptionsDataSourceSuggestionStart()}, + '$json_encoded_value' + );", ); return [$option_filter_template->get(), $component]; diff --git a/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html b/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html index e29c9f4683a5..e575d17ca230 100644 --- a/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html +++ b/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html @@ -24,5 +24,6 @@
{NOTHING_SELECTED}
{INPUT} + diff --git a/lang/ilias_de.lang b/lang/ilias_de.lang index 622acfb5cbe3..c9ac5331c974 100644 --- a/lang/ilias_de.lang +++ b/lang/ilias_de.lang @@ -17491,6 +17491,7 @@ ui#:#ui_chars_remaining#:#Verbleibende Buchstaben ui#:#ui_error#:#Fehler ui#:#ui_error_in_group#:#Es gibt einen Fehler in diesem Bereich. ui#:#ui_error_switchable_group_required#:#Bitte treffen Sie eine Auswahl. +ui#:#ui_field_option_filter_async_start_search#:#Geben Sie einen Suchbegriff ein der mindestens %s Zeichen lang ist, um Ergebnisse zu erhalten. ui#:#ui_field_option_filter_clear_search#:#Zurücksetzen ui#:#ui_field_option_filter_filtered_results_aria_label#:#Auswahlliste - einklappbar und filterbar ui#:#ui_field_option_filter_no_match#:#Es gibt keine Übereinstimmung mit dem Suchbegriff. diff --git a/lang/ilias_en.lang b/lang/ilias_en.lang index fe5ffb3331fb..2aa469a6c451 100644 --- a/lang/ilias_en.lang +++ b/lang/ilias_en.lang @@ -17463,6 +17463,7 @@ ui#:#ui_chars_remaining#:#Characters remaining: ui#:#ui_error#:#Error ui#:#ui_error_in_group#:#There is some error in this part. ui#:#ui_error_switchable_group_required#:#Please select an option. +ui#:#ui_field_option_filter_async_start_search#:#Enter a search term that is at least %s characters long to get results. ui#:#ui_field_option_filter_clear_search#:#Clear search ui#:#ui_field_option_filter_filtered_results_aria_label#:#List of options - collapsible and filterable ui#:#ui_field_option_filter_no_match#:#There was no match for the search term you entered. diff --git a/package-lock.json b/package-lock.json index 3ca61ad1dd35..9b154a077f93 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,10 @@ "jsdom": "^26.1.0", "rollup": "^4.28.1", "sass": "^1.86.3" + }, + "engines": { + "node": "^22.18 || ^24.0", + "npm": "^10.9.3 || ^11.3" } }, "node_modules/@asamuzakjp/css-color": { From 676995b8dd0f4c22301ed91de437df42e0b012a5 Mon Sep 17 00:00:00 2001 From: Marvin Beym Date: Fri, 27 Feb 2026 08:43:53 +0100 Subject: [PATCH 2/7] Add examples --- .../with_has_option_filter_data_source.php | 136 ++++++++++++++++++ .../with_has_option_filter_data_source.php | 135 +++++++++++++++++ 2 files changed, 271 insertions(+) create mode 100644 components/ILIAS/UI/src/examples/Input/Field/MultiSelect/with_has_option_filter_data_source.php create mode 100644 components/ILIAS/UI/src/examples/Input/Field/Radio/with_has_option_filter_data_source.php diff --git a/components/ILIAS/UI/src/examples/Input/Field/MultiSelect/with_has_option_filter_data_source.php b/components/ILIAS/UI/src/examples/Input/Field/MultiSelect/with_has_option_filter_data_source.php new file mode 100644 index 000000000000..a1fce4b58d88 --- /dev/null +++ b/components/ILIAS/UI/src/examples/Input/Field/MultiSelect/with_has_option_filter_data_source.php @@ -0,0 +1,136 @@ + + * An example showing a Multi-Select Input with an Option Filter and async data source + * + * expected output: > + * A Multi-Select with an Option Filter that can be expanded, collapsed and filtered. + * When expanded, there is a search input field. + * When entering letters into the search input, an async data source delivers matching options. + * Multiple options can be selected and will be pinned to the top of the list. + * A clear filter button resets the search input fields. + * When collapsed, the selected options are still being shown as a read-only preview. + * On screen readers, the number of filtered results is announced. + * --- + */ +function with_has_option_filter_data_source(): string +{ + //Step 1: Declare dependencies + global $DIC; + $ui = $DIC->ui()->factory(); + $ctrl = $DIC->ctrl(); + $renderer = $DIC->ui()->renderer(); + $http = $DIC->http(); + $http_wrapper = $http->wrapper(); + $refinery = $DIC->refinery(); + $DIC->ui()->mainTemplate()->addCss('./assets/ui-examples/css/radio_filterable_section_style.css'); + + //Step 2: Define async response endpoint + if ($http_wrapper->query()->has('display_values') || $http_wrapper->query()->has('term')) { + $data = [ + 'admin' => 'Administrator', + 'user' => 'User', + 'custom1' => 'My Custom Role 1', + 'custom2' => 'My Custom Role 2', + 'custom3' => 'My Custom Role 3' + ]; + + $display_values = $http_wrapper->query()->retrieve( + "display_values", + $refinery->byTrying([ + $refinery->kindlyTo()->listOf($refinery->kindlyTo()->string()), + $refinery->always(null) + ]) + ); + + if ($display_values) { + $result = []; + + foreach ($display_values as $display_value) { + if ($data[$display_value]) { + $result[] = [ + 'value' => urlencode($refinery->encode()->htmlSpecialCharsAsEntities()->transform($display_value)), + 'display' => $data[$display_value], + 'searchBy' => $display_value + ]; + } + } + + $http->saveResponse( + $http->response()->withBody( + Streams::ofString(json_encode($result, JSON_THROW_ON_ERROR)) + ) + ); + $http->sendResponse(); + $http->close(); + } + + $search_term = $http_wrapper->query()->retrieve( + "term", + $refinery->byTrying([ + $refinery->kindlyTo()->string(), + $refinery->always('') + ]) + ); + + $result = []; + foreach ($data as $value => $display_value) { + if (str_contains($display_value, $search_term)) { + $result[] = [ + 'value' => urlencode($refinery->encode()->htmlSpecialCharsAsEntities()->transform($value)), + 'display' => $display_value, + 'searchBy' => $value + ]; + } + } + + $http->saveResponse( + $http->response()->withBody( + Streams::ofString(json_encode($result, JSON_THROW_ON_ERROR)) + ) + ); + $http->sendResponse(); + $http->close(); + } + + //Step 3: define the radio + $ctrl->setParameterByClass(ilSystemStyleDocumentationGUI::class, 'node_id', 'InputFieldMultiSelectMultiSelect'); + $async_select = $ui->input()->field()->multiSelect( + "Role", + [], + "Select multiple roles provided by a data source" + ) + ->withHasOptionFilter(true, $ctrl->getLinkTargetByClass(ilSystemStyleDocumentationGUI::class, 'entries', '', true)); + $async_select = $async_select->withValue(["admin", "custom1"]); + + //Step 4: define form and form actions + $form = $ui->input()->container()->form()->standard('#', ['select' => $async_select]); + + //Step 5: Render the radio with the enclosing form. + return $renderer->render($form); +} diff --git a/components/ILIAS/UI/src/examples/Input/Field/Radio/with_has_option_filter_data_source.php b/components/ILIAS/UI/src/examples/Input/Field/Radio/with_has_option_filter_data_source.php new file mode 100644 index 000000000000..4d2d394a2fd7 --- /dev/null +++ b/components/ILIAS/UI/src/examples/Input/Field/Radio/with_has_option_filter_data_source.php @@ -0,0 +1,135 @@ + + * An example using the Radio Input with an Option Filter using async option loading. + * + * expected output: > + * A Radio with Search allowing to select an option from an async data source. + * When expanded, there is a list of options and a search input field. + * When entering letters into the search input, an async data source delivers matching options. + * An option can be selected and will be pinned to the top of the list. + * A clear filter button resets the search input field. + * When collapsed, the selected options are still being shown as a read-only preview. + * On screen readers, the number of filtered results is announced. + * --- + */ +function with_has_option_filter_data_source(): string +{ + //Step 1: Declare dependencies + global $DIC; + $ui = $DIC->ui()->factory(); + $ctrl = $DIC->ctrl(); + $renderer = $DIC->ui()->renderer(); + $http = $DIC->http(); + $http_wrapper = $http->wrapper(); + $refinery = $DIC->refinery(); + $DIC->ui()->mainTemplate()->addCss('./assets/ui-examples/css/radio_filterable_section_style.css'); + + //Step 2: Define async response endpoint + if ($http_wrapper->query()->has('display_values') || $http_wrapper->query()->has('term')) { + $data = [ + 'admin' => 'Administrator', + 'user' => 'User', + 'custom1' => 'My Custom Role 1', + 'custom2' => 'My Custom Role 2', + 'custom3' => 'My Custom Role 3' + ]; + + $display_values = $http_wrapper->query()->retrieve( + "display_values", + $refinery->byTrying([ + $refinery->kindlyTo()->listOf($refinery->kindlyTo()->string()), + $refinery->always(null) + ]) + ); + + if ($display_values) { + $result = []; + + foreach ($display_values as $display_value) { + if ($data[$display_value]) { + $result[] = [ + 'value' => urlencode($refinery->encode()->htmlSpecialCharsAsEntities()->transform($display_value)), + 'display' => $data[$display_value], + 'searchBy' => $display_value + ]; + } + } + + $http->saveResponse( + $http->response()->withBody( + Streams::ofString(json_encode($result, JSON_THROW_ON_ERROR)) + ) + ); + $http->sendResponse(); + $http->close(); + } + + $search_term = $http_wrapper->query()->retrieve( + "term", + $refinery->byTrying([ + $refinery->kindlyTo()->string(), + $refinery->always('') + ]) + ); + + $result = []; + foreach ($data as $value => $display_value) { + if (str_contains($display_value, $search_term)) { + $result[] = [ + 'value' => urlencode($refinery->encode()->htmlSpecialCharsAsEntities()->transform($value)), + 'display' => $display_value, + 'searchBy' => $value + ]; + } + } + + $http->saveResponse( + $http->response()->withBody( + Streams::ofString(json_encode($result, JSON_THROW_ON_ERROR)) + ) + ); + $http->sendResponse(); + $http->close(); + } + + //Step 3: define the radio + $ctrl->setParameterByClass(ilSystemStyleDocumentationGUI::class, 'node_id', 'InputFieldRadioRadio'); + $async_radio = $ui->input()->field()->radio( + "User", + "Select a single user login provided by a data source" + ) + ->withHasOptionFilter(true, $ctrl->getLinkTargetByClass(ilSystemStyleDocumentationGUI::class, 'entries', '', true)); + $async_radio = $async_radio->withValue("admin"); + + //Step 4: define form and form actions + $form = $ui->input()->container()->form()->standard('#', ['radio' => $async_radio]); + + //Step 5: Render the radio with the enclosing form. + return $renderer->render($form); +} From 602b0e61c6f35311053e6a43eafc517b69c955eb Mon Sep 17 00:00:00 2001 From: Marvin Beym Date: Fri, 27 Feb 2026 09:00:06 +0100 Subject: [PATCH 3/7] Fix test --- .../tests/Component/Input/Field/HasOptionFilterTestHelper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ILIAS/UI/tests/Component/Input/Field/HasOptionFilterTestHelper.php b/components/ILIAS/UI/tests/Component/Input/Field/HasOptionFilterTestHelper.php index d2043023c2f0..5a555db2c12b 100644 --- a/components/ILIAS/UI/tests/Component/Input/Field/HasOptionFilterTestHelper.php +++ b/components/ILIAS/UI/tests/Component/Input/Field/HasOptionFilterTestHelper.php @@ -75,7 +75,7 @@ function ($matches) { $span_pos = mb_strpos($html, $end_cut_anchor, $cut_after_pos); $filter_before_nesting = $strip_ids_fn(parent::brutallyTrimHTML('
ui_field_option_filter_no_selection
')); - $filter_after_nesting = $strip_ids_fn(parent::brutallyTrimHTML('
')); + $filter_after_nesting = $strip_ids_fn(parent::brutallyTrimHTML('')); $expected_before_nesting = mb_substr($html, 0, $cut_after_pos); $expected_after_nesting = mb_substr($html, $span_pos); From 392dca33f30a7699f0064e2106efbfaa11934383 Mon Sep 17 00:00:00 2001 From: Marvin Beym Date: Fri, 27 Feb 2026 09:40:20 +0100 Subject: [PATCH 4/7] Add loader animation --- .../js/Input/Field/dist/input.factory.min.js | 2 +- .../Field/src/OptionFilter/OptionFilter.js | 17 ++++++++++++++++- .../src/OptionFilter/OptionFilterFactory.js | 2 ++ .../Component/Input/Field/Renderer.php | 4 ++++ .../default/Input/tpl.option_filter.html | 1 + templates/default/delos.css | 8 ++++++++ 6 files changed, 32 insertions(+), 2 deletions(-) diff --git a/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js b/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js index 09536dd950a4..a88944e6c2f5 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js +++ b/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js @@ -38,4 +38,4 @@ This Software may not be rebranded and sold as a library under any other name other than "Tagify" (by owner) or as part of another library. - */var et="​";function nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n/g,">").replace(/"/g,""").replace(/`|'/g,"'"):t}function ut(t){var e=Object.prototype.toString.call(t).split(" ")[1].slice(0,-1);return t===Object(t)&&"Array"!=e&&"Function"!=e&&"RegExp"!=e&&"HTMLUnknownElement"!=e}function ht(t,e,n){var i,s;function a(t,e){for(var n in e)if(e.hasOwnProperty(n)){if(ut(e[n])){ut(t[n])?a(t[n],e[n]):t[n]=Object.assign({},e[n]);continue}if(Array.isArray(e[n])){t[n]=Object.assign([],e[n]);continue}t[n]=e[n]}}return i=t,(null!=(s=Object)&&"undefined"!=typeof Symbol&&s[Symbol.hasInstance]?s[Symbol.hasInstance](i):i instanceof s)||(t={}),a(t,e),n&&a(t,n),t}function gt(){var t=[],e={},n=!0,i=!1,s=void 0;try{for(var a,o=arguments[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var r=a.value,l=!0,d=!1,c=void 0;try{for(var u,h=r[Symbol.iterator]();!(l=(u=h.next()).done);l=!0){var g=u.value;ut(g)?e[g.value]||(t.push(g),e[g.value]=1):t.includes(g)||t.push(g)}}catch(t){d=!0,c=t}finally{try{l||null==h.return||h.return()}finally{if(d)throw c}}}}catch(t){i=!0,s=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw s}}return t}function pt(t){return String.prototype.normalize?"string"==typeof t?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):void 0:t}var ft=function(){return/(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function vt(t){var e;return wt.call(this,t)&&(null==t||null===(e=t.classList)||void 0===e?void 0:e.contains(this.settings.classNames.tag))}function yt(t){return wt.call(this,t)&&(null==t?void 0:t.closest(this.settings.classNames.tagSelector))}function wt(t){var e;return(null==t||null===(e=t.closest)||void 0===e?void 0:e.call(t,this.settings.classNames.namespaceSelector))===this.DOM.scope}function bt(t,e){var n=window.getSelection();return e=e||n.getRangeAt(0),"string"==typeof t&&(t=document.createTextNode(t)),e&&(e.deleteContents(),e.insertNode(t)),t}function Tt(t,e,n){return t?(e&&(t.__tagifyTagData=n?e:ht({},t.__tagifyTagData||{},e)),t.__tagifyTagData):(st.warn("tag element doesn't exist",{tagElm:t,data:e}),e)}function St(t){if(t&&t.parentNode){var e=t,n=window.getSelection(),i=n.getRangeAt(0);n.rangeCount&&(i.setStartAfter(e),i.collapse(!0),n.removeAllRanges(),n.addRange(i))}}function Et(t,e){t.forEach((function(t){if(Tt(t.previousSibling)||!t.previousSibling){var n=document.createTextNode("​");t.before(n),e&&St(n)}}))}var xt={delimiters:",",pattern:null,tagTextProp:"value",maxTags:1/0,callbacks:{},addTagOnBlur:!0,addTagOn:["blur","tab","enter"],onChangeAfterBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,userInput:!0,focusable:!0,keepInvalidTags:!1,createInvalidTags:!0,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,pasteAsTags:!0,editTags:{clicks:2,keepInvalid:!0},transformTag:function(){},trim:!0,a11y:{focusableTags:!1},mixMode:{insertAfterTag:" "},autoComplete:{enabled:!0,rightKey:!1,tabKey:!1},classNames:{namespace:"tagify",mixMode:"tagify--mix",selectMode:"tagify--select",input:"tagify__input",focus:"tagify--focus",tagNoAnimation:"tagify--noAnim",tagInvalid:"tagify--invalid",tagNotAllowed:"tagify--notAllowed",scopeLoading:"tagify--loading",hasMaxTags:"tagify--hasMaxTags",hasNoTags:"tagify--noTags",empty:"tagify--empty",inputInvalid:"tagify__input--invalid",dropdown:"tagify__dropdown",dropdownWrapper:"tagify__dropdown__wrapper",dropdownHeader:"tagify__dropdown__header",dropdownFooter:"tagify__dropdown__footer",dropdownItem:"tagify__dropdown__item",dropdownItemActive:"tagify__dropdown__item--active",dropdownItemHidden:"tagify__dropdown__item--hidden",dropdownItemSelected:"tagify__dropdown__item--selected",dropdownInital:"tagify__dropdown--initial",tag:"tagify__tag",tagText:"tagify__tag-text",tagX:"tagify__tag__removeBtn",tagLoading:"tagify__tag--loading",tagEditing:"tagify__tag--editable",tagFlash:"tagify__tag--flash",tagHide:"tagify__tag--hide"},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:["value","searchBy"],fuzzySearch:!0,caseSensitive:!1,accentedSearch:!0,includeSelectedTags:!1,escapeHTML:!0,highlightFirst:!0,closeOnSelect:!0,clearOnSelect:!0,position:"all",appendTarget:null},hooks:{beforeRemoveTag:function(){return Promise.resolve()},beforePaste:function(){return Promise.resolve()},suggestionClick:function(){return Promise.resolve()},beforeKeyDown:function(){return Promise.resolve()}}};function Ot(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],e=this.dropdown.events.callbacks,n=this.listeners.dropdown=this.listeners.dropdown||{position:this.dropdown.position.bind(this,null),onKeyDown:e.onKeyDown.bind(this),onMouseOver:e.onMouseOver.bind(this),onMouseLeave:e.onMouseLeave.bind(this),onClick:e.onClick.bind(this),onScroll:e.onScroll.bind(this)},i=t?"addEventListener":"removeEventListener";"manual"!=this.settings.dropdown.position&&(document[i]("scroll",n.position,!0),window[i]("resize",n.position),window[i]("keydown",n.onKeyDown)),this.DOM.dropdown[i]("mouseover",n.onMouseOver),this.DOM.dropdown[i]("mouseleave",n.onMouseLeave),this.DOM.dropdown[i]("mousedown",n.onClick),this.DOM.dropdown.content[i]("scroll",n.onScroll)},callbacks:{onKeyDown:function(t){var e=this;if(this.state.hasFocus&&!this.state.composing){var n=this.settings,i=n.dropdown.includeSelectedTags,s=this.DOM.dropdown.querySelector(n.classNames.dropdownItemActiveSelector),a=this.dropdown.getSuggestionDataByNode(s),o="mix"==n.mode,r="select"==n.mode;n.hooks.beforeKeyDown(t,{tagify:this}).then((function(l){switch(t.key){case"ArrowDown":case"ArrowUp":case"Down":case"Up":t.preventDefault();var d=e.dropdown.getAllSuggestionsRefs(),c="ArrowUp"==t.key||"Up"==t.key;s&&(s=e.dropdown.getNextOrPrevOption(s,!c)),s&&s.matches(n.classNames.dropdownItemSelector)||(s=d[c?d.length-1:0]),e.dropdown.highlightOption(s,!0);break;case"PageUp":case"PageDown":var u;t.preventDefault();var h=e.dropdown.getAllSuggestionsRefs(),g=Math.floor(e.DOM.dropdown.content.clientHeight/(null===(u=h[0])||void 0===u?void 0:u.offsetHeight))||1,p="PageUp"===t.key;if(s){var f=h.indexOf(s),m=p?Math.max(0,f-g):Math.min(h.length-1,f+g);s=h[m]}else s=h[0];e.dropdown.highlightOption(s,!0);break;case"Home":case"End":t.preventDefault();var v=e.dropdown.getAllSuggestionsRefs();s=v["Home"===t.key?0:v.length-1],e.dropdown.highlightOption(s,!0);break;case"Escape":case"Esc":e.dropdown.hide();break;case"ArrowRight":if(e.state.actions.ArrowLeft||n.autoComplete.rightKey)return;case"Tab":var y=!n.autoComplete.rightKey||!n.autoComplete.tabKey;if(!o&&!r&&s&&y&&!e.state.editing&&a){t.preventDefault();var w=e.dropdown.getMappedValue(a);return e.state.autoCompleteData=a,e.input.autocomplete.set.call(e,w),!1}return!0;case"Enter":t.preventDefault(),e.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),n.hooks.suggestionClick(t,{tagify:e,tagData:a,suggestionElm:s}).then((function(){if(s){var n=i?s:e.dropdown.getNextOrPrevOption(s,!c);e.dropdown.selectOption(s,t,(function(){if(n){var t=n.getAttribute("value");n=e.dropdown.getSuggestionNodeByValue(t),e.dropdown.highlightOption(n)}}))}else e.dropdown.hide(),o||e.addTags(e.state.inputText.trim(),!0)})).catch((function(t){return st.warn(t)}));break;case"Backspace":if(o||e.state.editing.scope)return;var b=e.input.raw.call(e);""!=b&&8203!=b.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0))}}))}},onMouseOver:function(t){var e=t.target.closest(this.settings.classNames.dropdownItemSelector);this.dropdown.highlightOption(e)},onMouseLeave:function(t){this.dropdown.highlightOption()},onClick:function(t){var e=this;if(0==t.button&&t.target!=this.DOM.dropdown&&t.target!=this.DOM.dropdown.content){var n=t.target.closest(this.settings.classNames.dropdownItemSelector),i=this.dropdown.getSuggestionDataByNode(n);this.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),this.settings.hooks.suggestionClick(t,{tagify:this,tagData:i,suggestionElm:n}).then((function(){n?e.dropdown.selectOption(n,t):e.dropdown.hide()})).catch((function(t){return st.warn(t)}))}},onScroll:function(t){var e=t.target,n=e.scrollTop/(e.scrollHeight-e.parentNode.clientHeight)*100;this.trigger("dropdown:scroll",{percentage:Math.round(n)})}}},refilter:function(t){t=t||this.state.dropdown.query||"",this.suggestedListItems=this.dropdown.filterListItems(t),this.dropdown.fill(),this.suggestedListItems.length||this.dropdown.hide(),this.trigger("dropdown:updated",this.DOM.dropdown)},getSuggestionDataByNode:function(t){for(var e,n=t&&t.getAttribute("value"),i=this.suggestedListItems.length;i--;){if(ut(e=this.suggestedListItems[i])&&e.value==n)return e;if(e==n)return{value:e}}},getSuggestionNodeByValue:function(t){return this.dropdown.getAllSuggestionsRefs().find((function(e){return e.getAttribute("value")===t}))},getNextOrPrevOption:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.dropdown.getAllSuggestionsRefs(),i=n.findIndex((function(e){return e===t}));return e?n[i+1]:n[i-1]},highlightOption:function(t,e){var n,i=this.settings.classNames.dropdownItemActive;if(this.state.ddItemElm&&(this.state.ddItemElm.classList.remove(i),this.state.ddItemElm.removeAttribute("aria-selected")),!t)return this.state.ddItemData=null,this.state.ddItemElm=null,void this.input.autocomplete.suggest.call(this);n=this.dropdown.getSuggestionDataByNode(t),this.state.ddItemData=n,this.state.ddItemElm=t,t.classList.add(i),t.setAttribute("aria-selected",!0),e&&(t.parentNode.scrollTop=t.clientHeight+t.offsetTop-t.parentNode.clientHeight),this.settings.autoComplete&&(this.input.autocomplete.suggest.call(this,n),this.dropdown.position())},selectOption:function(t,e,n){var i=this,s=this.settings,a=s.dropdown.includeSelectedTags,o=s.dropdown,r=o.clearOnSelect,l=o.closeOnSelect;if(!t)return this.addTags(this.state.inputText,!0),void(l&&this.dropdown.hide());e=e||{};var d=t.getAttribute("value"),c="noMatch"==d,u="mix"==s.mode,h=this.suggestedListItems.find((function(t){var e;return(null!==(e=t.value)&&void 0!==e?e:t)==d}));if(this.trigger("dropdown:select",{data:h,elm:t,event:e}),h||c){if(this.state.editing){var g=this.normalizeTags([h])[0];h=s.transformTag.call(this,g)||g,this.onEditTagDone(null,ht({__isValid:!0},h))}else this[u?"addMixTags":"addTags"]([h||this.input.raw.call(this)],r);(u||this.DOM.input.parentNode)&&(setTimeout((function(){i.DOM.input.focus(),i.toggleFocusClass(!0)})),l&&setTimeout(this.dropdown.hide.bind(this)),a?n&&n():(t.addEventListener("transitionend",(function(){i.dropdown.fillHeaderFooter(),setTimeout((function(){t.remove(),i.dropdown.refilter(),n&&n()}),100)}),{once:!0}),t.classList.add(this.settings.classNames.dropdownItemHidden)))}else l&&setTimeout(this.dropdown.hide.bind(this))},selectAll:function(t){this.suggestedListItems.length=0,this.dropdown.hide(),this.dropdown.filterListItems("");var e=this.dropdown.filterListItems("");return t||(e=this.state.dropdown.suggestions),this.addTags(e,!0),this},filterListItems:function(t,e){var n,i,s,a,o,r,l=function(){var t,l,d=void 0,c=void 0;t=p[w],i=(null!=(l=Object)&&"undefined"!=typeof Symbol&&l[Symbol.hasInstance]?l[Symbol.hasInstance](t):t instanceof l)?p[w]:{value:p[w]};var f,m=Object.keys(i).some((function(t){return y.includes(t)}))?y:["value"];u.fuzzySearch&&!e.exact?(a=m.reduce((function(t,e){return t+" "+(i[e]||"")}),"").toLowerCase().trim(),u.accentedSearch&&(a=pt(a),r=pt(r)),d=0==a.indexOf(r),c=a===r,f=a,s=r.toLowerCase().split(" ").every((function(t){return f.includes(t.toLowerCase())}))):(d=!0,s=m.some((function(t){var n=""+(i[t]||"");return u.accentedSearch&&(n=pt(n),r=pt(r)),u.caseSensitive||(n=n.toLowerCase()),c=n===r,e.exact?n===r:0==n.indexOf(r)}))),o=!u.includeSelectedTags&&n.isTagDuplicate(ut(i)?i.value:i),s&&!o&&(c&&d?g.push(i):"startsWith"==u.sortby&&d?h.unshift(i):h.push(i))},d=this,c=this.settings,u=c.dropdown,h=(e=e||{},[]),g=[],p=c.whitelist,f=u.maxItems>=0?u.maxItems:1/0,m=u.includeSelectedTags,v="function"==typeof u.sortby,y=u.searchKeys,w=0;if(!(t="select"==c.mode&&this.value.length&&this.value[0][c.tagTextProp]==t?"":t)||!y.length){h=m?p:p.filter((function(t){return!d.isTagDuplicate(ut(t)?t.value:t)}));var b=v?u.sortby(h,r):h.slice(0,f);return this.state.dropdown.suggestions=b,b}for(r=u.caseSensitive?""+t:(""+t).toLowerCase();w[\r\n ]+\<").split(/>\s+<").trim():""},fillHeaderFooter:function(){var t=this.dropdown.filterListItems(this.state.dropdown.query),e=this.parseTemplate("dropdownHeader",[t]),n=this.parseTemplate("dropdownFooter",[t]),i=this.dropdown.getHeaderRef(),s=this.dropdown.getFooterRef();e&&(null==i||i.parentNode.replaceChild(e,i)),n&&(null==s||s.parentNode.replaceChild(n,s))},position:function(t){var e=this.settings.dropdown,n=this.dropdown.getAppendTarget();if("manual"!=e.position&&n){var i,s,a,o,r,l,d,c,u,h,g=this.DOM.dropdown,p=e.RTL,f=n===document.body,m=n===this.DOM.scope,v=f?window.pageYOffset:n.scrollTop,y=document.fullscreenElement||document.webkitFullscreenElement||document.documentElement,w=y.clientHeight,b=Math.max(y.clientWidth||0,window.innerWidth||0),T=b>480?e.position:"all",S=this.DOM["input"==T?"input":"scope"];if(t=t||g.clientHeight,this.state.dropdown.visible){if("text"==T?(a=(i=function(){var t=document.getSelection();if(t.rangeCount){var e,n,i=t.getRangeAt(0),s=i.startContainer,a=i.startOffset;if(a>0)return(n=document.createRange()).setStart(s,a-1),n.setEnd(s,a),{left:(e=n.getBoundingClientRect()).right,top:e.top,bottom:e.bottom};if(s.getBoundingClientRect)return s.getBoundingClientRect()}return{left:-9999,top:-9999}}()).bottom,s=i.top,o=i.left,r="auto"):(l=function(t){var e=0,n=0;for(t=t.parentNode;t&&t!=y;)e+=t.offsetTop||0,n+=t.offsetLeft||0,t=t.parentNode;return{top:e,left:n}}(n),i=S.getBoundingClientRect(),s=m?-1:i.top-l.top,a=(m?i.height:i.bottom-l.top)-1,o=m?-1:i.left-l.left,r=i.width+"px"),!f){var E=function(){for(var t=0,n=e.appendTarget.parentNode;n;)t+=n.scrollTop||0,n=n.parentNode;return t}();s+=E,a+=E}var x;s=Math.floor(s),a=Math.ceil(a),c=b-o<120,u=((d=null!==(x=e.placeAbove)&&void 0!==x?x:w-i.bottom\n ').concat(this.settings.templates.input.call(this),"\n ").concat(et,"\n ")},input:function(){var t=this.settings,e=t.placeholder||et;return"')},tag:function(t,e){var n=e.settings;return'\n \n
\n ').concat(t[n.tagTextProp]||t.value,"\n
\n
")},dropdown:function(t){var e=t.dropdown,n="manual"==e.position;return'
\n
\n
')},dropdownContent:function(t){var e=this.settings.templates,n=this.state.dropdown.suggestions;return"\n ".concat(e.dropdownHeader.call(this,n),"\n ").concat(t,"\n ").concat(e.dropdownFooter.call(this,n),"\n ")},dropdownItem:function(t){return"
').concat(t.mappedValue||t.value,"
")},dropdownHeader:function(t){return"
')},dropdownFooter:function(t){var e=t.length-this.settings.dropdown.maxItems;return e>0?"
\n ').concat(e," more items. Refine your search.\n
"):""},dropdownItemNoMatch:null};function jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],n=this.settings,i=this.events.callbacks,s=e?"addEventListener":"removeEventListener";if(!this.state.mainEvents||!e){for(var a in this.state.mainEvents=e,e&&!this.listeners.main&&(this.events.bindGlobal.call(this),this.settings.isJQueryPlugin&&jQuery(this.DOM.originalInput).on("tagify.removeAllTags",this.removeAllTags.bind(this))),t=this.listeners.main=this.listeners.main||{keydown:["input",i.onKeydown.bind(this)],click:["scope",i.onClickScope.bind(this)],dblclick:"select"!=n.mode&&["scope",i.onDoubleClickScope.bind(this)],paste:["input",i.onPaste.bind(this)],drop:["input",i.onDrop.bind(this)],compositionstart:["input",i.onCompositionStart.bind(this)],compositionend:["input",i.onCompositionEnd.bind(this)]})t[a]&&this.DOM[t[a][0]][s](a,t[a][1]);var o=this.listeners.main.inputMutationObserver||new MutationObserver(i.onInputDOMChange.bind(this));o.disconnect(),"mix"==n.mode&&o.observe(this.DOM.input,{childList:!0}),this.events.bindOriginaInputListener.call(this)}},bindOriginaInputListener:function(t){var e=(t||0)+500;this.listeners.main&&(clearInterval(this.listeners.main.originalInputValueObserverInterval),this.listeners.main.originalInputValueObserverInterval=setInterval(this.events.callbacks.observeOriginalInputValue.bind(this),e))},bindGlobal:function(t){var e,n=this.events.callbacks,i=t?"removeEventListener":"addEventListener";if(this.listeners&&(t||!this.listeners.global)){this.listeners.global=this.listeners.global||[{type:this.isIE?"keydown":"input",target:this.DOM.input,cb:n[this.isIE?"onInputIE":"onInput"].bind(this)},{type:"keydown",target:window,cb:n.onWindowKeyDown.bind(this)},{type:"focusin",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"focusout",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"click",target:document,cb:n.onClickAnywhere.bind(this),useCapture:!0}];var s=!0,a=!1,o=void 0;try{for(var r,l=this.listeners.global[Symbol.iterator]();!(s=(r=l.next()).done);s=!0)(e=r.value).target[i](e.type,e.cb,!!e.useCapture)}catch(t){a=!0,o=t}finally{try{s||null==l.return||l.return()}finally{if(a)throw o}}}},unbindGlobal:function(){this.events.bindGlobal.call(this,!0)},callbacks:{onFocusBlur:function(t){var e,n,i=this.settings,s=yt.call(this,t.relatedTarget),a=vt.call(this,t.relatedTarget),o=t.target.classList.contains(i.classNames.tagX),r="focusin"==t.type,l="focusout"==t.type;o&&"mix"!=i.mode&&this.DOM.input.focus(),s&&r&&!a&&!o&&this.toggleFocusClass(this.state.hasFocus=+new Date);var d=t.target?this.trim(this.DOM.input.textContent):"",c=null===(n=this.value)||void 0===n||null===(e=n[0])||void 0===e?void 0:e[i.tagTextProp],u=i.dropdown.enabled>=0,h={relatedTarget:t.relatedTarget},g=this.state.actions.selectOption&&(u||!i.dropdown.closeOnSelect),p=this.state.actions.addNew&&u;if(l){if(t.relatedTarget===this.DOM.scope)return this.dropdown.hide(),void this.DOM.input.focus();this.postUpdate(),i.onChangeAfterBlur&&this.triggerChangeEvent()}if(!(g||p||o))if(this.state.hasFocus=!(!r&&!s)&&+new Date,this.toggleFocusClass(this.state.hasFocus),"mix"!=i.mode){if(r){if(!i.focusable)return;var f=0===i.dropdown.enabled&&!this.state.dropdown.visible,m=!a||"select"===i.mode,v=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector);return this.trigger("focus",h),void(f&&m&&(this.dropdown.show(this.value.length?"":void 0),this.setRangeAtStartEnd(!1,v)))}if(l){if(this.trigger("blur",h),this.loading(!1),"select"==i.mode){if(this.value.length){var y=this.getTagElms()[0];d=this.trim(y.textContent)}c===d&&(d="")}d&&!this.state.actions.selectOption&&i.addTagOnBlur&&i.addTagOn.includes("blur")&&this.addTags(d,!0)}s||(this.DOM.input.removeAttribute("style"),this.dropdown.hide())}else r?this.trigger("focus",h):l&&(this.trigger("blur",h),this.loading(!1),this.dropdown.hide(),this.state.dropdown.visible=void 0,this.setStateSelection())},onCompositionStart:function(t){this.state.composing=!0},onCompositionEnd:function(t){this.state.composing=!1},onWindowKeyDown:function(t){var e,n=this.settings,i=document.activeElement,s=yt.call(this,i)&&this.DOM.scope.contains(i),a=i===this.DOM.input,o=s&&i.hasAttribute("readonly"),r=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),l=this.state.dropdown.visible;if(("Tab"===t.key&&l||this.state.hasFocus||s&&!o)&&!a){e=i.nextElementSibling;var d=t.target.classList.contains(n.classNames.tagX);switch(t.key){case"Backspace":n.readonly||this.state.editing||(this.removeTags(i),(e||this.DOM.input).focus());break;case"Enter":if(d)return void this.removeTags(t.target.parentNode);n.a11y.focusableTags&&vt.call(this,i)&&setTimeout(this.editTag.bind(this),0,i);break;case"ArrowDown":this.state.dropdown.visible||"mix"==n.mode||this.dropdown.show();break;case"Tab":null==r||r.focus()}}},onKeydown:function(t){var e=this,n=this.settings;if(!this.state.composing&&n.userInput){"select"==n.mode&&n.enforceWhitelist&&this.value.length&&"Tab"!=t.key&&t.preventDefault();var i=this.trim(t.target.textContent);this.trigger("keydown",{event:t}),n.hooks.beforeKeyDown(t,{tagify:this}).then((function(s){if("mix"==n.mode){switch(t.key){case"Left":case"ArrowLeft":e.state.actions.ArrowLeft=!0;break;case"Delete":case"Backspace":if(e.state.editing)return;var a=document.getSelection(),o="Delete"==t.key&&a.anchorOffset==(a.anchorNode.length||0),r=a.anchorNode.previousSibling,l=1==a.anchorNode.nodeType||!a.anchorOffset&&r&&1==r.nodeType&&a.anchorNode.previousSibling;!function(t){var e=document.createElement("div");t.replace(/\&#?[0-9a-z]+;/gi,(function(t){return e.innerHTML=t,e.innerText}))}(e.DOM.input.innerHTML);var d,c,u,h=e.getTagElms(),g=1===a.anchorNode.length&&a.anchorNode.nodeValue==String.fromCharCode(8203);if("edit"==n.backspace&&l)return d=1==a.anchorNode.nodeType?null:a.anchorNode.previousElementSibling,setTimeout(e.editTag.bind(e),0,d),void t.preventDefault();if(ft()&&Ht(l,Element))return u=dt(l),l.hasAttribute("readonly")||l.remove(),e.DOM.input.focus(),void setTimeout((function(){St(u),e.DOM.input.click()}));if("BR"==a.anchorNode.nodeName)return;if((o||l)&&1==a.anchorNode.nodeType?c=0==a.anchorOffset?o?h[0]:null:h[Math.min(h.length,a.anchorOffset)-1]:o?c=a.anchorNode.nextElementSibling:Ht(l,Element)&&(c=l),3==a.anchorNode.nodeType&&!a.anchorNode.nodeValue&&a.anchorNode.previousElementSibling&&t.preventDefault(),(l||o)&&!n.backspace)return void t.preventDefault();if("Range"!=a.type&&!a.anchorOffset&&a.anchorNode==e.DOM.input&&"Delete"!=t.key)return void t.preventDefault();if("Range"!=a.type&&c&&c.hasAttribute("readonly"))return void St(dt(c));"Delete"==t.key&&g&&Tt(a.anchorNode.nextSibling)&&e.removeTags(a.anchorNode.nextSibling)}return!0}var p="manual"==n.dropdown.position;switch(t.key){case"Backspace":"select"==n.mode&&n.enforceWhitelist&&e.value.length?e.removeTags():e.state.dropdown.visible&&"manual"!=n.dropdown.position||""!=t.target.textContent&&8203!=i.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0));break;case"Esc":case"Escape":if(e.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":e.state.dropdown.visible||e.dropdown.show();break;case"ArrowRight":var f=e.state.inputSuggestion||e.state.ddItemData;if(f&&n.autoComplete.rightKey)return void e.addTags([f],!0);break;case"Tab":return!0;case"Enter":if(e.state.dropdown.visible&&!p)return;t.preventDefault();var m=e.state.autoCompleteData||i;setTimeout((function(){e.state.dropdown.visible&&!p||e.state.actions.selectOption||!n.addTagOn.includes(t.key.toLowerCase())||(e.addTags([m],!0),e.state.autoCompleteData=null)}))}})).catch((function(t){return t}))}},onInput:function(t){this.postUpdate();var e=this.settings;if("mix"==e.mode)return this.events.callbacks.onMixTagsInput.call(this,t);var n=this.input.normalize.call(this,void 0,{trim:!1}),i=n.length>=e.dropdown.enabled,s={value:n,inputElm:this.DOM.input},a=this.validateTag({value:n});"select"==e.mode&&this.toggleScopeValidation(a),s.isValid=a,this.state.inputText!=n&&(this.input.set.call(this,n,!1),-1!=n.search(e.delimiters)?this.addTags(n)&&this.input.set.call(this):e.dropdown.enabled>=0&&this.dropdown[i?"show":"hide"](n),this.trigger("input",s))},onMixTagsInput:function(t){var e,n,i,s,a,o,r,l,d=this,c=this.settings,u=this.value.length,h=this.getTagElms(),g=document.createDocumentFragment(),p=window.getSelection().getRangeAt(0),f=[].map.call(h,(function(t){return Tt(t).value}));if("deleteContentBackward"==t.inputType&&ft()&&this.events.callbacks.onKeydown.call(this,{target:t.target,key:"Backspace"}),Et(this.getTagElms()),this.value.slice().forEach((function(t){t.readonly&&!f.includes(t.value)&&g.appendChild(d.createTagElem(t))})),g.childNodes.length&&(p.insertNode(g),this.setRangeAtStartEnd(!1,g.lastChild)),h.length!=u)return this.value=[].map.call(this.getTagElms(),(function(t){return Tt(t)})),void this.update({withoutChangeEvent:!0});if(this.hasMaxTags())return!0;if(window.getSelection&&(o=window.getSelection()).rangeCount>0&&3==o.anchorNode.nodeType){if((p=o.getRangeAt(0).cloneRange()).collapse(!0),p.setStart(o.focusNode,0),i=(e=p.toString().slice(0,p.endOffset)).split(c.pattern).length-1,(n=e.match(c.pattern))&&(s=e.slice(e.lastIndexOf(n[n.length-1]))),s){if(this.state.actions.ArrowLeft=!1,this.state.tag={prefix:s.match(c.pattern)[0],value:s.replace(c.pattern,"")},this.state.tag.baseOffset=o.baseOffset-this.state.tag.value.length,l=this.state.tag.value.match(c.delimiters))return this.state.tag.value=this.state.tag.value.replace(c.delimiters,""),this.state.tag.delimiters=l[0],this.addTags(this.state.tag.value,c.dropdown.clearOnSelect),void this.dropdown.hide();a=this.state.tag.value.length>=c.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||i500||!e.focusable)?this.state.dropdown.visible?this.dropdown.hide():0===e.dropdown.enabled&&"mix"!=e.mode&&this.dropdown.show(this.value.length?"":void 0):"select"!=e.mode||0!==e.dropdown.enabled||this.state.dropdown.visible||(this.events.callbacks.onDoubleClickScope.call(this,function(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n.push.apply(n,i)}return n}(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t}(function(t){for(var e=1;e=this.settings.dropdown.enabled&&(this.state.editing&&(this.state.editing.value=o),this.dropdown.show(o)),this.trigger("edit:input",{tag:i,index:s,data:ht({},this.value[s],{newValue:o}),event:e})},onEditTagPaste:function(t,e){var n=(e.clipboardData||window.clipboardData).getData("Text");e.preventDefault();var i=bt(n);this.setRangeAtStartEnd(!1,i)},onEditTagClick:function(t,e){this.events.callbacks.onClickScope.call(this,e)},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t,e){var n=vt.call(this,e.relatedTarget);if("select"==this.settings.mode&&n&&e.relatedTarget.contains(e.target))this.dropdown.hide();else if(this.state.editing&&(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(document.activeElement)||this.trigger("blur",{}),this.DOM.scope.contains(t))){var i,s,a,o=this.settings,r=t.closest("."+o.classNames.tag),l=Tt(r),d=this.input.normalize.call(this,t),c=(qt(i={},o.tagTextProp,d),qt(i,"__tagId",l.__tagId),i),u=l.__originalData,h=this.editTagChangeDetected(ht(l,c)),g=this.validateTag(c);if(d)if(h){var p;if(s=this.hasMaxTags(),a=ht({},u,(qt(p={},o.tagTextProp,this.trim(d)),qt(p,"__isValid",g),p)),o.transformTag.call(this,a,u),!0!==(g=(!s||!0===u.__isValid)&&this.validateTag(a))){if(this.trigger("invalid",{data:a,tag:r,message:g}),o.editTags.keepInvalid)return;o.keepInvalidTags?a.__isValid=g:a=u}else o.keepInvalidTags&&(delete a.title,delete a["aria-invalid"],delete a.class);this.onEditTagDone(r,a)}else this.onEditTagDone(r,u);else this.onEditTagDone(r)}},onEditTagkeydown:function(t,e){if(!this.state.composing)switch(this.trigger("edit:keydown",{event:t}),t.key){case"Esc":case"Escape":this.state.editing=!1,e.__tagifyTagData.__originalData.value?e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML,e):e.remove();break;case"Enter":case"Tab":t.preventDefault(),setTimeout((function(){return t.target.blur()}),0)}},onDoubleClickScope:function(t){var e=t.target.closest("."+this.settings.classNames.tag);if(e){var n,i,s=Tt(e),a=this.settings;!1!==(null==s?void 0:s.editable)&&(n=e.classList.contains(this.settings.classNames.tagEditing),i=e.hasAttribute("readonly"),a.readonly||n||i||!this.settings.editTags||!a.userInput||(this.events.callbacks.onEditTagFocus.call(this,e),this.editTag(e)),this.toggleFocusClass(!0),"select"!=a.mode&&this.trigger("dblclick",{tag:e,index:this.getNodeIndex(e),data:Tt(e)}))}},onInputDOMChange:function(t){var e=this;t.forEach((function(t){t.addedNodes.forEach((function(t){if("

"==t.outerHTML)t.replaceWith(document.createElement("br"));else if(1==t.nodeType&&t.querySelector(e.settings.classNames.tagSelector)){var n,i=document.createTextNode("");3==t.childNodes[0].nodeType&&"BR"!=t.previousSibling.nodeName&&(i=document.createTextNode("\n")),(n=t).replaceWith.apply(n,Rt([i].concat(Rt(Rt(t.childNodes).slice(0,-1))))),St(i)}else if(vt.call(e,t)){var s;if(3!=(null===(s=t.previousSibling)||void 0===s?void 0:s.nodeType)||t.previousSibling.textContent||t.previousSibling.remove(),t.previousSibling&&"BR"==t.previousSibling.nodeName){t.previousSibling.replaceWith("\n​");for(var a=t.nextSibling,o="";a;)o+=a.textContent,a=a.nextSibling;o.trim()&&St(t.previousSibling)}else t.previousSibling&&!Tt(t.previousSibling)||t.before("​")}})),t.removedNodes.forEach((function(t){t&&"BR"==t.nodeName&&vt.call(e,n)&&(e.removeTags(n),e.fixFirefoxLastTagNoCaret())}))}));var n=this.DOM.input.lastChild;n&&""==n.nodeValue&&n.remove(),n&&"BR"==n.nodeName||this.DOM.input.appendChild(document.createElement("br"))}}};function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.map((t=>t.value)),dropdown:{enabled:e.dropdownSuggestionsStartAfter,maxItems:e.dropdownMaxItems,closeOnSelect:e.dropdownCloseOnSelect,highlightFirst:e.highlight},transformTag(t){t.display||(t.display=t.value,t.value=encodeURIComponent(t.value)),t.display=t.display.replace(//g,">")},templates:{wrapper(t,e){return`
\n ${this.settings.templates.input.call(this)}\n ​\n
`},tag:t=>`
\n \n
\n ${t.display}\n
\n
`,dropdownItem:t=>`
\n ${t.display}\n
`}}}(e.id,n));o.addTags(i),void 0!==s&&o.on("input",(t=>{!function(t,e,n,i,s,a){Qt instanceof AbortController&&Qt.abort(),Qt=new AbortController,t.whitelist=null,void 0!==Gt&&(t.DOM.scope.ownerDocument.defaultView.clearTimeout(Gt),Gt=void 0),s.detail.value.length{const e=s.detail.value;n.writeParameter(i,e),t.loading(!0),fetch(n.getUrl().toString(),{signal:Qt.signal}).then((t=>t.json())).catch((()=>{})).then((n=>{t.whitelist=n,t.loading(!1).dropdown.show(e)}))}),a))}(o,n.suggestionStarts,s,a,t,n.autocompleteTriggerTimeout)}))}Jt.prototype={_dropdown:Lt,placeCaretAfterNode:St,getSetTagData:Tt,helpers:{sameStr:at,removeCollectionProp:ot,omit:rt,isObject:ut,parseHTML:lt,escapeHTML:ct,extend:ht,concatWithoutDups:gt,getUID:mt,isNodeTag:vt},customEventsList:["change","add","remove","invalid","input","paste","click","keydown","focus","blur","edit:input","edit:beforeUpdate","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select","dropdown:updated","dropdown:noMatch","dropdown:scroll"],dataProps:["__isValid","__removed","__originalData","__originalHTML","__tagId"],trim:function(t){return this.settings.trim&&t&&"string"==typeof t?t.trim():t},parseHTML:lt,templates:Bt,parseTemplate:function(t,e){return lt((t=this.settings.templates[t]||t).apply(this,e))},set whitelist(t){var e=t&&Array.isArray(t);this.settings.whitelist=e?t:[],this.setPersistedData(e?t:[],"whitelist")},get whitelist(){return this.settings.whitelist},set userInput(t){this.settings.userInput=!!t,this.setContentEditable(!!t)},get userInput(){return this.settings.userInput},generateClassSelectors:function(t){var e=function(e){var n=e;Object.defineProperty(t,n+"Selector",{get:function(){return"."+this[n].split(" ")[0]}})};for(var n in t)e(n)},applySettings:function(t,e){var n,i;xt.templates=this.templates;var s=ht({},xt,"mix"==e.mode?{dropdown:{position:"text"}}:{}),a=this.settings=ht({},s,e);if(a.disabled=t.hasAttribute("disabled"),a.readonly=a.readonly||t.hasAttribute("readonly"),a.placeholder=ct(t.getAttribute("placeholder")||a.placeholder||""),a.required=t.hasAttribute("required"),this.generateClassSelectors(a.classNames),this.isIE&&(a.autoComplete=!1),["whitelist","blacklist"].forEach((function(e){var n=t.getAttribute("data-"+e);n&&zt(n=n.split(a.delimiters),Array)&&(a[e]=n)})),"autoComplete"in e&&!ut(e.autoComplete)&&(a.autoComplete=xt.autoComplete,a.autoComplete.enabled=e.autoComplete),"mix"==a.mode&&(a.pattern=a.pattern||/@/,a.autoComplete.rightKey=!0,a.delimiters=e.delimiters||null,a.tagTextProp&&!a.dropdown.searchKeys.includes(a.tagTextProp)&&a.dropdown.searchKeys.push(a.tagTextProp)),t.pattern)try{a.pattern=new RegExp(t.pattern)}catch(t){}if(a.delimiters){a._delimiters=a.delimiters;try{a.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}}a.disabled&&(a.userInput=!1),this.TEXTS=Kt({},Pt,a.texts||{}),"select"==a.mode&&(a.dropdown.includeSelectedTags=!0),("select"!=a.mode||(null===(n=e.dropdown)||void 0===n?void 0:n.enabled))&&a.userInput||(a.dropdown.enabled=0),a.dropdown.appendTarget=(null===(i=e.dropdown)||void 0===i?void 0:i.appendTarget)||document.body,void 0===a.dropdown.includeSelectedTags&&(a.dropdown.includeSelectedTags=a.duplicates);var o=this.getPersistedData("whitelist");Array.isArray(o)&&(this.whitelist=Array.isArray(a.whitelist)?gt(a.whitelist,o):o)},getAttributes:function(t){var e,n=this.getCustomAttributes(t),i="";for(e in n)i+=" "+e+(void 0!==t[e]?'="'.concat(n[e],'"'):"");return i},getCustomAttributes:function(t){if(!ut(t))return"";var e,n={};for(e in t)"__"!=e.slice(0,2)&&"class"!=e&&t.hasOwnProperty(e)&&void 0!==t[e]&&(n[e]=ct(t[e]));return n},setStateSelection:function(){var t=window.getSelection(),e={anchorOffset:t.anchorOffset,anchorNode:t.anchorNode,range:t.getRangeAt&&t.rangeCount&&t.getRangeAt(0)};return this.state.selection=e,e},getCSSVars:function(){var t,e,n=getComputedStyle(this.DOM.scope,null);this.CSSVars={tagHideTransition:(t=function(t){if(!t)return{};var e=(t=t.trim().split(" ")[0]).split(/\d+/g).filter((function(t){return t})).pop().trim();return{value:+t.split(e).filter((function(t){return t}))[0].trim(),unit:e}}(("tag-hide-transition",n.getPropertyValue("--tag-hide-transition"))),e=t.value,"s"==t.unit?1e3*e:e)}},build:function(t){var e=this.DOM,n=t.closest("label");this.settings.mixMode.integrated?(e.originalInput=null,e.scope=t,e.input=t):(e.originalInput=t,e.originalInput_tabIndex=t.tabIndex,e.scope=this.parseTemplate("wrapper",[t,this.settings]),e.input=e.scope.querySelector(this.settings.classNames.inputSelector),t.parentNode.insertBefore(e.scope,t),t.tabIndex=-1),n&&n.setAttribute("for","")},destroy:function(){var t;this.events.unbindGlobal.call(this),null===(t=this.DOM.scope.parentNode)||void 0===t||t.removeChild(this.DOM.scope),this.DOM.originalInput.tabIndex=this.DOM.originalInput_tabIndex,delete this.DOM.originalInput.__tagify,this.dropdown.hide(!0),this.removeAllCustomListeners(),clearTimeout(this.dropdownHide__bindEventsTimeout),clearInterval(this.listeners.main.originalInputValueObserverInterval)},loadOriginalValues:function(t){var e,n=this.settings;if(this.state.blockChangeEvent=!0,void 0===t){var i=this.getPersistedData("value");t=i&&!this.DOM.originalInput.value?i:n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value}if(this.removeAllTags(),t)if("mix"==n.mode)this.parseMixTags(t),(e=this.DOM.input.lastChild)&&"BR"==e.tagName||this.DOM.input.insertAdjacentHTML("beforeend","
");else{try{zt(JSON.parse(t),Array)&&(t=JSON.parse(t))}catch(t){}this.addTags(t,!0).forEach((function(t){return t&&t.classList.add(n.classNames.tagNoAnimation)}))}else this.postUpdate();this.state.lastOriginalValueReported=n.mixMode.integrated?"":this.DOM.originalInput.value},cloneEvent:function(t){var e={};for(var n in t)"path"!=n&&(e[n]=t[n]);return e},loading:function(t){return this.state.isLoading=t,this.DOM.scope.classList[t?"add":"remove"](this.settings.classNames.scopeLoading),this},tagLoading:function(t,e){return t&&t.classList[e?"add":"remove"](this.settings.classNames.tagLoading),this},toggleClass:function(t,e){"string"==typeof t&&this.DOM.scope.classList.toggle(t,e)},toggleScopeValidation:function(t){var e=!0===t||void 0===t;!this.settings.required&&t&&t===this.TEXTS.empty&&(e=!0),this.toggleClass(this.settings.classNames.tagInvalid,!e),this.DOM.scope.title=e?"":t},toggleFocusClass:function(t){this.toggleClass(this.settings.classNames.focus,!!t)},setPlaceholder:function(t){var e=this;["data","aria"].forEach((function(n){return e.DOM.input.setAttribute("".concat(n,"-placeholder"),t)}))},triggerChangeEvent:function(){if(!this.settings.mixMode.integrated){var t=this.DOM.originalInput,e=this.state.lastOriginalValueReported!==t.value,n=new CustomEvent("change",{bubbles:!0});e&&(this.state.lastOriginalValueReported=t.value,n.simulated=!0,t._valueTracker&&t._valueTracker.setValue(Math.random()),t.dispatchEvent(n),this.trigger("change",this.state.lastOriginalValueReported),t.value=this.state.lastOriginalValueReported)}},events:$t,fixFirefoxLastTagNoCaret:function(){},setRangeAtStartEnd:function(t,e){if(e){t="number"==typeof t?t:!!t,e=e.lastChild||e;var n=document.getSelection();if(zt(n.focusNode,Element)&&!this.DOM.input.contains(n.focusNode))return!0;try{n.rangeCount>=1&&["Start","End"].forEach((function(i){return n.getRangeAt(0)["set"+i](e,t||e.length)}))}catch(t){console.warn(t)}}},insertAfterTag:function(t,e){if(e=e||this.settings.mixMode.insertAfterTag,t&&t.parentNode&&e)return e="string"==typeof e?document.createTextNode(e):e,t.parentNode.insertBefore(e,t.nextSibling),e},editTagChangeDetected:function(t){var e=t.__originalData;for(var n in e)if(!this.dataProps.includes(n)&&t[n]!=e[n])return!0;return!1},getTagTextNode:function(t){return t.querySelector(this.settings.classNames.tagTextSelector)},setTagTextNode:function(t,e){this.getTagTextNode(t).innerHTML=ct(e)},editTag:function(t,e){var n=this;t=t||this.getLastTag(),e=e||{};var i=this.settings,s=this.getTagTextNode(t),a=this.getNodeIndex(t),o=Tt(t),r=this.events.callbacks,l=!0,d="select"==i.mode;if(!d&&this.dropdown.hide(),s){if(!zt(o,Object)||!("editable"in o)||o.editable)return o=Tt(t,{__originalData:ht({},o),__originalHTML:t.cloneNode(!0)}),Tt(o.__originalHTML,o.__originalData),s.setAttribute("contenteditable",!0),t.classList.add(i.classNames.tagEditing),this.events.callbacks.onEditTagFocus.call(this,t),s.addEventListener("click",r.onEditTagClick.bind(this,t)),s.addEventListener("blur",r.onEditTagBlur.bind(this,this.getTagTextNode(t))),s.addEventListener("input",r.onEditTagInput.bind(this,s)),s.addEventListener("paste",r.onEditTagPaste.bind(this,s)),s.addEventListener("keydown",(function(e){return r.onEditTagkeydown.call(n,e,t)})),s.addEventListener("compositionstart",r.onCompositionStart.bind(this)),s.addEventListener("compositionend",r.onCompositionEnd.bind(this)),e.skipValidation||(l=this.editTagToggleValidity(t)),s.originalIsValid=l,this.trigger("edit:start",{tag:t,index:a,data:o,isValid:l}),s.focus(),!d&&this.setRangeAtStartEnd(!1,s),0===i.dropdown.enabled&&!d&&this.dropdown.show(),this.state.hasFocus=!0,this}else st.warn("Cannot find element in Tag template: .",i.classNames.tagTextSelector)},editTagToggleValidity:function(t,e){var n;if(e=e||Tt(t))return(n=!("__isValid"in e)||!0===e.__isValid)||this.removeTagsFromValue(t),this.update(),t.classList.toggle(this.settings.classNames.tagNotAllowed,!n),e.__isValid=n,e.__isValid;st.warn("tag has no data: ",t,e)},onEditTagDone:function(t,e){t=t||this.state.editing.scope,e=e||{};var n,i,s=this.settings,a={tag:t,index:this.getNodeIndex(t),previousData:Tt(t),data:e};this.trigger("edit:beforeUpdate",a,{cloneData:!1}),this.state.editing=!1,delete e.__originalData,delete e.__originalHTML,t&&t.parentNode&&((void 0!==(i=e[s.tagTextProp])?null===(n=(i+="").trim)||void 0===n?void 0:n.call(i):s.tagTextProp in e?void 0:e.value)?(t=this.replaceTag(t,e),this.editTagToggleValidity(t,e),s.a11y.focusableTags?t.focus():"select"!=s.mode&&St(t)):this.removeTags(t)),this.trigger("edit:updated",a),s.dropdown.closeOnSelect&&this.dropdown.hide(),this.settings.keepInvalidTags&&this.reCheckInvalidTags()},replaceTag:function(t,e){e&&""!==e.value&&void 0!==e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&ht(e,this.getInvalidTagAttrs(e,e.__isValid));var n=this.createTagElem(e);return t.parentNode.replaceChild(n,t),this.updateValueByDOMTags(),n},updateValueByDOMTags:function(){var t=this;this.value.length=0;var e=this.settings.classNames,n=[e.tagNotAllowed.split(" ")[0],e.tagHide];[].forEach.call(this.getTagElms(),(function(e){Xt(e.classList).some((function(t){return n.includes(t)}))||t.value.push(Tt(e))})),this.update(),this.dropdown.refilter()},injectAtCaret:function(t,e){var n;if(e=e||(null===(n=this.state.selection)||void 0===n?void 0:n.range),"string"==typeof t&&(t=document.createTextNode(t)),!e&&t)return this.appendMixTags(t),this;var i=bt(t,e);return this.setRangeAtStartEnd(!1,i),this.updateValueByDOMTags(),this.update(),this},input:{set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.settings,i=n.dropdown.closeOnSelect;this.state.inputText=t,e&&(this.DOM.input.innerHTML=ct(""+t),t&&this.toggleClass(n.classNames.empty,!this.DOM.input.innerHTML)),!t&&i&&this.dropdown.hide.bind(this),this.input.autocomplete.suggest.call(this),this.input.validate.call(this)},raw:function(){return this.DOM.input.textContent},validate:function(){var t=!this.state.inputText||!0===this.validateTag({value:this.state.inputText});return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid,!t),t},normalize:function(t,e){var n=t||this.DOM.input,i=[];n.childNodes.forEach((function(t){return 3==t.nodeType&&i.push(t.nodeValue)})),i=i.join("\n");try{i=i.replace(/(?:\r\n|\r|\n)/g,this.settings.delimiters.source.charAt(0))}catch(t){}return i=i.replace(/\s/g," "),(null==e?void 0:e.trim)?this.trim(i):i},autocomplete:{suggest:function(t){if(this.settings.autoComplete.enabled){"object"!=typeof(t=t||{value:""})&&(t={value:t});var e=this.dropdown.getMappedValue(t);if("number"!=typeof e){var n=this.state.inputText.toLowerCase(),i=e.substr(0,this.state.inputText.length).toLowerCase(),s=e.substring(this.state.inputText.length);e&&this.state.inputText&&i==n?(this.DOM.input.setAttribute("data-suggest",s),this.state.inputSuggestion=t):(this.DOM.input.removeAttribute("data-suggest"),delete this.state.inputSuggestion)}}},set:function(t){var e=this.DOM.input.getAttribute("data-suggest"),n=t||(e?this.state.inputText+e:null);return!!n&&("mix"==this.settings.mode?this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix+n)):(this.input.set.call(this,n),this.setRangeAtStartEnd(!1,this.DOM.input)),this.input.autocomplete.suggest.call(this),this.dropdown.hide(),!0)}}},getTagIdx:function(t){return this.value.findIndex((function(e){return e.__tagId==(t||{}).__tagId}))},getNodeIndex:function(t){var e=0;if(t)for(;t=t.previousElementSibling;)e++;return e},getTagElms:function(){for(var t=arguments.length,e=new Array(t),n=0;n=this.settings.maxTags&&this.TEXTS.exceed},setReadonly:function(t,e){var n=this.settings;this.DOM.scope.contains(document.activeElement)&&document.activeElement.blur(),n[e||"readonly"]=t,this.DOM.scope[(t?"set":"remove")+"Attribute"](e||"readonly",!0),this.settings.userInput=!0,this.setContentEditable(!t)},setContentEditable:function(t){this.DOM.input.contentEditable=t,this.DOM.input.tabIndex=t?0:-1},setDisabled:function(t){this.setReadonly(t,"disabled")},normalizeTags:function(t){var e=this,n=this.settings,i=n.whitelist,s=n.delimiters,a=n.mode,o=n.tagTextProp,r=[],l=!!i&&zt(i[0],Object),d=Array.isArray(t),c=d&&t[0].value,u=function(t){return(t+"").split(s).reduce((function(t,n){var i,s=e.trim(n);return s&&t.push((Wt(i={},o,s),Wt(i,"value",s),i)),t}),[])};if("number"==typeof t&&(t=t.toString()),"string"==typeof t){if(!t.trim())return[];t=u(t)}else d&&(t=t.reduce((function(t,n){if(ut(n)){var i=ht({},n);o in i||(o="value"),i[o]=e.trim(i[o]),(i[o]||0===i[o])&&t.push(i)}else if(null!=n&&""!==n&&void 0!==n){var s;(s=t).push.apply(s,Xt(u(n)))}return t}),[]));return l&&!c&&(t.forEach((function(t){var n=r.map((function(t){return t.value})),i=e.dropdown.filterListItems.call(e,t[o],{exact:!0});e.settings.duplicates||(i=i.filter((function(t){return!n.includes(t.value)})));var s=i.length>1?e.getWhitelistItem(t[o],o,i):i[0];s&&zt(s,Object)?r.push(s):"mix"!=a&&(null==t.value&&(t.value=t[o]),r.push(t))})),r.length&&(t=r)),t},parseMixTags:function(t){var e=this,n=this.settings,i=n.mixTagsInterpolator,s=n.duplicates,a=n.transformTag,o=n.enforceWhitelist,r=n.maxTags,l=n.tagTextProp,d=[];t=t.split(i[0]).map((function(t,n){var c,u,h,g=t.split(i[1]),p=g[0],f=d.length==r;try{if(p==+p)throw Error;u=JSON.parse(p)}catch(t){u=e.normalizeTags(p)[0]||{value:p}}if(a.call(e,u),f||!(g.length>1)||o&&!e.isTagWhitelisted(u.value)||!s&&e.isTagDuplicate(u.value)){if(t)return n?i[0]+t:t}else u[c=u[l]?l:"value"]=e.trim(u[c]),h=e.createTagElem(u),d.push(u),h.classList.add(e.settings.classNames.tagNoAnimation),g[0]=h.outerHTML,e.value.push(u);return g.join("")})).join(""),this.DOM.input.innerHTML=t,this.DOM.input.appendChild(document.createTextNode("")),this.DOM.input.normalize();var c=this.getTagElms();return c.forEach((function(t,e){return Tt(t,d[e])})),this.update({withoutChangeEvent:!0}),Et(c,this.state.hasFocus),t},replaceTextWithNode:function(t,e){if(this.state.tag||e){e=e||this.state.tag.prefix+this.state.tag.value;var n,i,s=this.state.selection||window.getSelection(),a=s.anchorNode,o=this.state.tag.delimiters?this.state.tag.delimiters.length:0;return a.splitText(s.anchorOffset-o),-1==(n=a.nodeValue.lastIndexOf(e))||(i=a.splitText(n),t&&a.parentNode.replaceChild(t,i)),!0}},prepareNewTagNode:function(t,e){e=e||{};var n=this.settings,i=[],s={},a=Object.assign({},t,{value:t.value+""});if(t=Object.assign({},a),n.transformTag.call(this,t),t.__isValid=this.hasMaxTags()||this.validateTag(t),!0!==t.__isValid){if(e.skipInvalid)return;if(ht(s,this.getInvalidTagAttrs(t,t.__isValid),{__preInvalidData:a}),t.__isValid==this.TEXTS.duplicate&&this.flashTag(this.getTagElmByValue(t.value)),!n.createInvalidTags)return void i.push(t.value)}return"readonly"in t&&(t.readonly?s["aria-readonly"]=!0:delete t.readonly),{tagElm:this.createTagElem(t,s),tagData:t,aggregatedInvalidInput:i}},postProcessNewTagNode:function(t,e){var n=this,i=this.settings,s=e.__isValid;s&&!0===s?this.value.push(e):(this.trigger("invalid",{data:e,index:this.value.length,tag:t,message:s}),i.keepInvalidTags||setTimeout((function(){return n.removeTags(t,!0)}),1e3)),this.dropdown.position()},selectTag:function(t,e){var n=this;if(!this.settings.enforceWhitelist||this.isTagWhitelisted(e.value)){this.state.actions.selectOption&&setTimeout((function(){return n.setRangeAtStartEnd(!1,n.DOM.input)}));var i=this.getLastTag();return i?this.replaceTag(i,e):this.appendTag(t),this.value[0]=e,this.update(),this.trigger("add",{tag:t,data:e}),[t]}},addEmptyTag:function(t){var e=ht({value:""},t||{}),n=this.createTagElem(e);Tt(n,e),this.appendTag(n),this.editTag(n,{skipValidation:!0}),this.toggleFocusClass(!0)},addTags:function(t,e,n){var i=this,s=[],a=this.settings,o=[],r=document.createDocumentFragment(),l=[];if(!t||0==t.length)return s;switch(t=this.normalizeTags(t),a.mode){case"mix":return this.addMixTags(t);case"select":e=!1,this.removeAllTags()}return this.DOM.input.removeAttribute("style"),t.forEach((function(t){var e=i.prepareNewTagNode(t,{skipInvalid:n||a.skipInvalid});if(e){var d=e.tagElm;if(t=e.tagData,o=e.aggregatedInvalidInput,s.push(d),"select"==a.mode)return i.selectTag(d,t);r.appendChild(d),i.postProcessNewTagNode(d,t),l.push({tagElm:d,tagData:t})}})),this.appendTag(r),l.forEach((function(t){var e=t.tagElm,n=t.tagData;return i.trigger("add",{tag:e,index:i.getTagIdx(n),data:n})})),this.update(),t.length&&e&&(this.input.set.call(this,a.createInvalidTags?"":o.join(a._delimiters)),this.setRangeAtStartEnd(!1,this.DOM.input)),this.dropdown.refilter(),s},addMixTags:function(t){var e=this;if((t=this.normalizeTags(t))[0].prefix||this.state.tag)return this.prefixedTextToTag(t[0]);var n=document.createDocumentFragment();return t.forEach((function(t){var i=e.prepareNewTagNode(t);n.appendChild(i.tagElm),e.insertAfterTag(i.tagElm),e.postProcessNewTagNode(i.tagElm,i.tagData)})),this.appendMixTags(n),n.children},appendMixTags:function(t){var e=!!this.state.selection;e?this.injectAtCaret(t):(this.DOM.input.focus(),(e=this.setStateSelection()).range.setStart(this.DOM.input,e.range.endOffset),e.range.setEnd(this.DOM.input,e.range.endOffset),this.DOM.input.appendChild(t),this.updateValueByDOMTags(),this.update())},prefixedTextToTag:function(t){var e,n,i,s=this,a=this.settings,o=null===(e=this.state.tag)||void 0===e?void 0:e.delimiters;if(t.prefix=t.prefix||this.state.tag?this.state.tag.prefix:(a.pattern.source||a.pattern)[0],i=this.prepareNewTagNode(t),n=i.tagElm,this.replaceTextWithNode(n)||this.DOM.input.appendChild(n),setTimeout((function(){return n.classList.add(s.settings.classNames.tagNoAnimation)}),300),this.update(),!o){var r=this.insertAfterTag(n)||n;setTimeout(St,0,r)}return this.state.tag=null,this.postProcessNewTagNode(n,i.tagData),n},appendTag:function(t){var e=this.DOM,n=e.input;e.scope.insertBefore(t,n)},createTagElem:function(t,e){t.__tagId=mt();var n,i=ht({},t,Kt({value:ct(t.value+"")},e));return function(t){for(var e,n=document.createNodeIterator(t,NodeFilter.SHOW_TEXT,null,!1);e=n.nextNode();)e.textContent.trim()||e.parentNode.removeChild(e)}(n=this.parseTemplate("tag",[i,this])),Tt(n,t),n},reCheckInvalidTags:function(){var t=this,e=this.settings;this.getTagElms(e.classNames.tagNotAllowed).forEach((function(n,i){var s=Tt(n),a=t.hasMaxTags(),o=t.validateTag(s),r=!0===o&&!a;if("select"==e.mode&&t.toggleScopeValidation(o),r)return s=s.__preInvalidData?s.__preInvalidData:{value:s.value},t.replaceTag(n,s);n.title=a||o}))},removeTags:function(t,e,n){var i,s=this,a=this.settings;if(t=t&&zt(t,HTMLElement)?[t]:zt(t,Array)?t:t?[t]:[this.getLastTag()].filter((function(t){return t})),i=t.reduce((function(t,e){e&&"string"==typeof e&&(e=s.getTagElmByValue(e));var n=Tt(e);return e&&n&&!n.readonly&&t.push({node:e,idx:s.getTagIdx(n),data:Tt(e,{__removed:!0})}),t}),[]),n="number"==typeof n?n:this.CSSVars.tagHideTransition,"select"==a.mode&&(n=0,this.input.set.call(this)),1==i.length&&"select"!=a.mode&&i[0].node.classList.contains(a.classNames.tagNotAllowed)&&(e=!0),i.length)return a.hooks.beforeRemoveTag(i,{tagify:this}).then((function(){var t=function(t){t.node.parentNode&&(t.node.parentNode.removeChild(t.node),e?a.keepInvalidTags&&this.trigger("remove",{tag:t.node,index:t.idx}):(this.trigger("remove",{tag:t.node,index:t.idx,data:t.data}),this.dropdown.refilter(),this.dropdown.position(),this.DOM.input.normalize(),a.keepInvalidTags&&this.reCheckInvalidTags()))};n&&n>10&&1==i.length?function(e){e.node.style.width=parseFloat(window.getComputedStyle(e.node).width)+"px",document.body.clientTop,e.node.classList.add(a.classNames.tagHide),setTimeout(t.bind(this),n,e)}.call(s,i[0]):i.forEach(t.bind(s)),e||(s.removeTagsFromValue(i.map((function(t){return t.node}))),s.update(),"select"==a.mode&&a.userInput&&s.setContentEditable(!0))})).catch((function(t){}))},removeTagsFromDOM:function(){this.getTagElms().forEach((function(t){return t.remove()}))},removeTagsFromValue:function(t){var e=this;(t=Array.isArray(t)?t:[t]).forEach((function(t){var n=Tt(t),i=e.getTagIdx(n);i>-1&&e.value.splice(i,1)}))},removeAllTags:function(t){var e=this;t=t||{},this.value=[],"mix"==this.settings.mode?this.DOM.input.innerHTML="":this.removeTagsFromDOM(),this.dropdown.refilter(),this.dropdown.position(),this.state.dropdown.visible&&setTimeout((function(){e.DOM.input.focus()})),"select"==this.settings.mode&&(this.input.set.call(this),this.settings.userInput&&this.setContentEditable(!0)),this.update(t)},postUpdate:function(){this.state.blockChangeEvent=!1;var t,e,n=this.settings,i=n.classNames,s="mix"==n.mode?n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value.trim():this.value.length+this.input.raw.call(this).length;this.toggleClass(i.hasMaxTags,this.value.length>=n.maxTags),this.toggleClass(i.hasNoTags,!this.value.length),this.toggleClass(i.empty,!s),"select"==n.mode&&this.toggleScopeValidation(null===(e=this.value)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.__isValid)},setOriginalInputValue:function(t){var e=this.DOM.originalInput;this.settings.mixMode.integrated||(e.value=t,e.tagifyValue=e.value,this.setPersistedData(t,"value"))},update:function(t){clearTimeout(this.debouncedUpdateTimeout),this.debouncedUpdateTimeout=setTimeout(function(){var e=this.getInputValue();this.setOriginalInputValue(e),this.settings.onChangeAfterBlur&&(t||{}).withoutChangeEvent||this.state.blockChangeEvent||this.triggerChangeEvent(),this.postUpdate()}.bind(this),100),this.events.bindOriginaInputListener.call(this,100)},getInputValue:function(){var t=this.getCleanValue();return"mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):""},getCleanValue:function(t){return ot(t||this.value,this.dataProps)},getMixedTagsAsString:function(){var t="",e=this,n=this.settings,i=n.originalInputValueFormat||JSON.stringify,s=n.mixTagsInterpolator;return function n(a){a.childNodes.forEach((function(a){if(1==a.nodeType){var o=Tt(a);if("BR"==a.tagName&&(t+="\r\n"),o&&vt.call(e,a)){if(o.__removed)return;t+=s[0]+i(rt(o,e.dataProps))+s[1]}else a.getAttribute("style")||["B","I","U"].includes(a.tagName)?t+=a.textContent:"DIV"!=a.tagName&&"P"!=a.tagName||(t+="\r\n",n(a))}else t+=a.textContent}))}(this.DOM.input),t}},Jt.prototype.removeTag=Jt.prototype.removeTags;const Zt="radio-field-input",te="multi-select-field-input";class ee{#U;#W;#z;#K;#X;#J;#Q;#G;#Y;#Z;#tt;#et;#nt;#it;#st;#at;#ot=null;#rt;#lt;#dt;#ct;#ut;#ht=null;#gt=null;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g,p,f,m,v){this.#U=t,this.#Z=o,this.#W=r,this.#z=l,this.#K=d,this.#X=c,this.#nt=u,this.#it=h,this.#st=v,this.#rt=e,this.#lt=n,this.#dt=i,this.#ct=s,this.#ut=a,this.#at=this.#st.innerHTML,this.#Y=g,this.#J=p,this.#Q=f,this.#G=m,this.#et=!1,this.#tt=!1,this.isAsync()&&(this.clearOptionElements(),this.loadOptionsDataSourceValues()),this.#W.addEventListener("input",(t=>{this.isAsync()?this.handleOptionsDataSource(t.target).then((()=>{this.filterItemsSearch(t)})):this.filterItemsSearch(t)})),this.#Y.addEventListener("click",(()=>{this.setFiltered(!1)})),this.#J.addEventListener("click",(()=>{this.isAsync()&&(this.#W.value="",this.clearOptionElements()),this.toggleVisibility()})),"radio-field-input"===this.#z&&this.#X.forEach((t=>{t.addEventListener("change",(()=>{this.scrollListToTop()}))}))}isAsync(){return null!==this.#rt&&void 0!==this.#rt}isEngaged(){return this.#et}isFiltered(){return this.#tt}setFiltered(t){this.#tt!==t&&(this.#tt=t,t?(this.#Y.style.removeProperty("display"),this.#st.style.removeProperty("display")):(this.#W.value="",this.#Y.style.display="none",this.#st.style.display="none",this.#nt.style.display="none",this.#pt()))}toggleVisibility(){this.isEngaged()?(this.#et=!1,this.#U.classList.remove("engaged"),this.setFiltered(!1),this.#J.setAttribute("aria-expanded","false"),this.#Q.style.removeProperty("display"),this.#G.style.display="none",this.#it.style.display="none"):(this.#et=!0,this.#U.classList.add("engaged"),this.#J.setAttribute("aria-expanded","true"),this.#Q.style.display="none",this.#G.style.removeProperty("display"),this.isAsync()&&this.#it.style.removeProperty("display"))}#ft(t){this.#U.ownerDocument.defaultView.clearTimeout(this.#ot),this.#ot=this.#U.ownerDocument.defaultView.setTimeout((()=>{this.#st.textContent="",this.#U.ownerDocument.defaultView.requestAnimationFrame((()=>{this.#st.textContent=t}))}),500)}#mt(t){const e=$(this.#at,t);this.#ft(e)}loadOptionsDataSourceValues(){return new Promise(((t,e)=>{("string"==typeof this.#ut||this.#ut instanceof String||this.#ut instanceof Array)&&this.fetchDataSource(new Map([[this.#dt,this.#ut]])).then((n=>{n&&n instanceof Array?(n.forEach((t=>{this.#K.append(this.optionsDataSourceDataToElement(t,!0))})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),t()):e()}))})).catch((t=>{if(t instanceof Error)throw t}))}handleOptionsDataSource(t){return this.#gt instanceof AbortController&&this.#gt.abort(),this.#gt=new AbortController,void 0!==this.#ht&&(clearTimeout(this.#ht),this.#ht=void 0),new Promise(((e,n)=>{if(t.value.length{const i=t.value;return this.fetchDataSource(new Map([[this.#lt,i]]),this.#gt.signal).then((t=>{t&&t instanceof Array?(this.clearOptionElements(),t.forEach((t=>{const e=this.optionsDataSourceDataToElement(t);this.#K.querySelector(`[data-value='${e.dataset.value}'][data-display='${e.dataset.display}']`)||this.#K.append(e)})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),e()):n(new Error("Invalid data received from data source fetch"))}))}),200)})).catch((t=>{if(t instanceof Error)throw t}))}fetchDataSource(t,e=null){const n=new URL(this.#rt,document.location);t.forEach(((t,e)=>{t instanceof Array?t.forEach((t=>{n.searchParams.append(`${e}[]`,t)})):n.searchParams.set(e,t)}));const i={};return e instanceof AbortController&&(i.signal=e.signal),fetch(n,i).then((t=>t.json())).catch((()=>{}))}clearOptionElements(t=!1){Array.from(this.#K.children).forEach((e=>{if(t)this.#K.removeChild(e);else{const t=e.querySelector("input");t&&t.checked||this.#K.removeChild(e)}})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item")}optionsDataSourceDataToElement(t,e=!1){const n=Math.random().toString(16).slice(2),i=document.createElement("input");i.id=n,i.value=t.value;const s=document.createElement("label");let a;switch(s.htmlFor=n,this.#z){case Zt:a=document.createElement("div"),a.className="c-field-radio__item c-field--has-option-filter__item",i.type="radio",i.name=this.#U.dataset.ilUiInputName,s.innerText=t.display,a.append(i),a.append(s);break;case te:a=document.createElement("li"),a.className="c-field--has-option-filter__item",i.type="checkbox",i.name=`${this.#U.dataset.ilUiInputName}[]`;const e=document.createElement("span");e.className="c-field-multiselect__label-text",e.innerText=t.display,s.append(i),s.append(e),a.append(s);break;default:throw new Error(`Unsupported list type '${this.#z}' received`)}return i.checked=e,a.dataset.value=t.value,a.dataset.display=t.display,a.dataset.searchBy=t.searchBy,a}filterItemsSearch(t){const e=t.target.value.toLowerCase();this.setFiltered(!!e);let n=0,i=!1;this.#X.forEach((t=>{t.textContent.toLowerCase().includes(e)?(n+=1,i=!0,ne(t)):function(t){t.style.display="none"}(t)})),this.#mt(n.toString()),""!==e&&!1===i?this.#nt.style.removeProperty("display"):(""===e||i)&&(this.#nt.style.display="none")}#pt(){this.#X.forEach((t=>ne(t)))}scrollListToTop(){this.#Z.scrollTo({top:0,behavior:"smooth"})}}function ne(t){t.style.removeProperty("display")}class ie{#V=new Map;init(t,e,n,i,s,a){if(void 0===t)throw new TypeError("During init of an InputHasOptionFilter an undefined element was passed to the factory.");if(this.#V.has(t.id))throw new Error(`A InputHasOptionFilter with id '${t.id}' has already been initialized.`);const o=t,r=o.querySelector(".c-input--has-option-filter__field"),l=o.querySelector(".c-input--has-option-filter__search-input input"),d=o.getAttribute("data-il-ui-component"),c=o.querySelector(".c-field--has-option-filter__list"),u=c.querySelectorAll(".c-field--has-option-filter__item"),h=o.querySelector(".message-no-match"),g=o.querySelector(".message-async-start-search"),p=o.querySelector('.c-input--has-option-filter__synopsis [role="status"]'),f=o.querySelector(".c-input--has-option-filter__clear-search"),m=o.querySelector(".c-input--has-option-filter__visibility-toggle"),v=m.querySelector(".text-expand"),y=m.querySelector(".text-collapse"),w=new ee(t,""===e?null:e,n,i,s,JSON.parse(a),r,l,d,c,u,h,g,f,m,v,y,p);return this.#V.set(t.id,w),w}get(t){return this.#V.has(t)?this.#V.get(t):null}}var se;e.UI=e.UI||{},e.UI.Input=e.UI.Input||{},(se=e.UI.Input).textarea=new o,se.mustacheVariables={init:(t,e)=>function(t,e){e.querySelectorAll(".c-input--has-mustache-variables__definitions > li > a").forEach((e=>{const n=function(t){const e=t.textContent.match(/^\s*\{\{([^}]+)\}\}\s*$/);return e?e[1].trim():null}(e);e.addEventListener("click",(()=>{t.insertCharactersAroundSelection(`{{${n}}}`,"")}))}))}(t,e)},se.markdown=new y,se.optionFilter=new ie,se.treeSelect=new Z(new tt(t),e.UI.menu.drilldown,{txt:t=>e.Language.txt(t)},n),se.tagInput=se.tag||{},se.tagInput.init=(t,e,n,i,s)=>Yt(Jt,t,e,n,i,s)}($,il,document); + */var et="​";function nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n/g,">").replace(/"/g,""").replace(/`|'/g,"'"):t}function ut(t){var e=Object.prototype.toString.call(t).split(" ")[1].slice(0,-1);return t===Object(t)&&"Array"!=e&&"Function"!=e&&"RegExp"!=e&&"HTMLUnknownElement"!=e}function ht(t,e,n){var i,s;function a(t,e){for(var n in e)if(e.hasOwnProperty(n)){if(ut(e[n])){ut(t[n])?a(t[n],e[n]):t[n]=Object.assign({},e[n]);continue}if(Array.isArray(e[n])){t[n]=Object.assign([],e[n]);continue}t[n]=e[n]}}return i=t,(null!=(s=Object)&&"undefined"!=typeof Symbol&&s[Symbol.hasInstance]?s[Symbol.hasInstance](i):i instanceof s)||(t={}),a(t,e),n&&a(t,n),t}function gt(){var t=[],e={},n=!0,i=!1,s=void 0;try{for(var a,o=arguments[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var r=a.value,l=!0,d=!1,c=void 0;try{for(var u,h=r[Symbol.iterator]();!(l=(u=h.next()).done);l=!0){var g=u.value;ut(g)?e[g.value]||(t.push(g),e[g.value]=1):t.includes(g)||t.push(g)}}catch(t){d=!0,c=t}finally{try{l||null==h.return||h.return()}finally{if(d)throw c}}}}catch(t){i=!0,s=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw s}}return t}function pt(t){return String.prototype.normalize?"string"==typeof t?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):void 0:t}var ft=function(){return/(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function vt(t){var e;return wt.call(this,t)&&(null==t||null===(e=t.classList)||void 0===e?void 0:e.contains(this.settings.classNames.tag))}function yt(t){return wt.call(this,t)&&(null==t?void 0:t.closest(this.settings.classNames.tagSelector))}function wt(t){var e;return(null==t||null===(e=t.closest)||void 0===e?void 0:e.call(t,this.settings.classNames.namespaceSelector))===this.DOM.scope}function bt(t,e){var n=window.getSelection();return e=e||n.getRangeAt(0),"string"==typeof t&&(t=document.createTextNode(t)),e&&(e.deleteContents(),e.insertNode(t)),t}function Tt(t,e,n){return t?(e&&(t.__tagifyTagData=n?e:ht({},t.__tagifyTagData||{},e)),t.__tagifyTagData):(st.warn("tag element doesn't exist",{tagElm:t,data:e}),e)}function St(t){if(t&&t.parentNode){var e=t,n=window.getSelection(),i=n.getRangeAt(0);n.rangeCount&&(i.setStartAfter(e),i.collapse(!0),n.removeAllRanges(),n.addRange(i))}}function Et(t,e){t.forEach((function(t){if(Tt(t.previousSibling)||!t.previousSibling){var n=document.createTextNode("​");t.before(n),e&&St(n)}}))}var xt={delimiters:",",pattern:null,tagTextProp:"value",maxTags:1/0,callbacks:{},addTagOnBlur:!0,addTagOn:["blur","tab","enter"],onChangeAfterBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,userInput:!0,focusable:!0,keepInvalidTags:!1,createInvalidTags:!0,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,pasteAsTags:!0,editTags:{clicks:2,keepInvalid:!0},transformTag:function(){},trim:!0,a11y:{focusableTags:!1},mixMode:{insertAfterTag:" "},autoComplete:{enabled:!0,rightKey:!1,tabKey:!1},classNames:{namespace:"tagify",mixMode:"tagify--mix",selectMode:"tagify--select",input:"tagify__input",focus:"tagify--focus",tagNoAnimation:"tagify--noAnim",tagInvalid:"tagify--invalid",tagNotAllowed:"tagify--notAllowed",scopeLoading:"tagify--loading",hasMaxTags:"tagify--hasMaxTags",hasNoTags:"tagify--noTags",empty:"tagify--empty",inputInvalid:"tagify__input--invalid",dropdown:"tagify__dropdown",dropdownWrapper:"tagify__dropdown__wrapper",dropdownHeader:"tagify__dropdown__header",dropdownFooter:"tagify__dropdown__footer",dropdownItem:"tagify__dropdown__item",dropdownItemActive:"tagify__dropdown__item--active",dropdownItemHidden:"tagify__dropdown__item--hidden",dropdownItemSelected:"tagify__dropdown__item--selected",dropdownInital:"tagify__dropdown--initial",tag:"tagify__tag",tagText:"tagify__tag-text",tagX:"tagify__tag__removeBtn",tagLoading:"tagify__tag--loading",tagEditing:"tagify__tag--editable",tagFlash:"tagify__tag--flash",tagHide:"tagify__tag--hide"},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:["value","searchBy"],fuzzySearch:!0,caseSensitive:!1,accentedSearch:!0,includeSelectedTags:!1,escapeHTML:!0,highlightFirst:!0,closeOnSelect:!0,clearOnSelect:!0,position:"all",appendTarget:null},hooks:{beforeRemoveTag:function(){return Promise.resolve()},beforePaste:function(){return Promise.resolve()},suggestionClick:function(){return Promise.resolve()},beforeKeyDown:function(){return Promise.resolve()}}};function Ot(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],e=this.dropdown.events.callbacks,n=this.listeners.dropdown=this.listeners.dropdown||{position:this.dropdown.position.bind(this,null),onKeyDown:e.onKeyDown.bind(this),onMouseOver:e.onMouseOver.bind(this),onMouseLeave:e.onMouseLeave.bind(this),onClick:e.onClick.bind(this),onScroll:e.onScroll.bind(this)},i=t?"addEventListener":"removeEventListener";"manual"!=this.settings.dropdown.position&&(document[i]("scroll",n.position,!0),window[i]("resize",n.position),window[i]("keydown",n.onKeyDown)),this.DOM.dropdown[i]("mouseover",n.onMouseOver),this.DOM.dropdown[i]("mouseleave",n.onMouseLeave),this.DOM.dropdown[i]("mousedown",n.onClick),this.DOM.dropdown.content[i]("scroll",n.onScroll)},callbacks:{onKeyDown:function(t){var e=this;if(this.state.hasFocus&&!this.state.composing){var n=this.settings,i=n.dropdown.includeSelectedTags,s=this.DOM.dropdown.querySelector(n.classNames.dropdownItemActiveSelector),a=this.dropdown.getSuggestionDataByNode(s),o="mix"==n.mode,r="select"==n.mode;n.hooks.beforeKeyDown(t,{tagify:this}).then((function(l){switch(t.key){case"ArrowDown":case"ArrowUp":case"Down":case"Up":t.preventDefault();var d=e.dropdown.getAllSuggestionsRefs(),c="ArrowUp"==t.key||"Up"==t.key;s&&(s=e.dropdown.getNextOrPrevOption(s,!c)),s&&s.matches(n.classNames.dropdownItemSelector)||(s=d[c?d.length-1:0]),e.dropdown.highlightOption(s,!0);break;case"PageUp":case"PageDown":var u;t.preventDefault();var h=e.dropdown.getAllSuggestionsRefs(),g=Math.floor(e.DOM.dropdown.content.clientHeight/(null===(u=h[0])||void 0===u?void 0:u.offsetHeight))||1,p="PageUp"===t.key;if(s){var f=h.indexOf(s),m=p?Math.max(0,f-g):Math.min(h.length-1,f+g);s=h[m]}else s=h[0];e.dropdown.highlightOption(s,!0);break;case"Home":case"End":t.preventDefault();var v=e.dropdown.getAllSuggestionsRefs();s=v["Home"===t.key?0:v.length-1],e.dropdown.highlightOption(s,!0);break;case"Escape":case"Esc":e.dropdown.hide();break;case"ArrowRight":if(e.state.actions.ArrowLeft||n.autoComplete.rightKey)return;case"Tab":var y=!n.autoComplete.rightKey||!n.autoComplete.tabKey;if(!o&&!r&&s&&y&&!e.state.editing&&a){t.preventDefault();var w=e.dropdown.getMappedValue(a);return e.state.autoCompleteData=a,e.input.autocomplete.set.call(e,w),!1}return!0;case"Enter":t.preventDefault(),e.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),n.hooks.suggestionClick(t,{tagify:e,tagData:a,suggestionElm:s}).then((function(){if(s){var n=i?s:e.dropdown.getNextOrPrevOption(s,!c);e.dropdown.selectOption(s,t,(function(){if(n){var t=n.getAttribute("value");n=e.dropdown.getSuggestionNodeByValue(t),e.dropdown.highlightOption(n)}}))}else e.dropdown.hide(),o||e.addTags(e.state.inputText.trim(),!0)})).catch((function(t){return st.warn(t)}));break;case"Backspace":if(o||e.state.editing.scope)return;var b=e.input.raw.call(e);""!=b&&8203!=b.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0))}}))}},onMouseOver:function(t){var e=t.target.closest(this.settings.classNames.dropdownItemSelector);this.dropdown.highlightOption(e)},onMouseLeave:function(t){this.dropdown.highlightOption()},onClick:function(t){var e=this;if(0==t.button&&t.target!=this.DOM.dropdown&&t.target!=this.DOM.dropdown.content){var n=t.target.closest(this.settings.classNames.dropdownItemSelector),i=this.dropdown.getSuggestionDataByNode(n);this.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),this.settings.hooks.suggestionClick(t,{tagify:this,tagData:i,suggestionElm:n}).then((function(){n?e.dropdown.selectOption(n,t):e.dropdown.hide()})).catch((function(t){return st.warn(t)}))}},onScroll:function(t){var e=t.target,n=e.scrollTop/(e.scrollHeight-e.parentNode.clientHeight)*100;this.trigger("dropdown:scroll",{percentage:Math.round(n)})}}},refilter:function(t){t=t||this.state.dropdown.query||"",this.suggestedListItems=this.dropdown.filterListItems(t),this.dropdown.fill(),this.suggestedListItems.length||this.dropdown.hide(),this.trigger("dropdown:updated",this.DOM.dropdown)},getSuggestionDataByNode:function(t){for(var e,n=t&&t.getAttribute("value"),i=this.suggestedListItems.length;i--;){if(ut(e=this.suggestedListItems[i])&&e.value==n)return e;if(e==n)return{value:e}}},getSuggestionNodeByValue:function(t){return this.dropdown.getAllSuggestionsRefs().find((function(e){return e.getAttribute("value")===t}))},getNextOrPrevOption:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.dropdown.getAllSuggestionsRefs(),i=n.findIndex((function(e){return e===t}));return e?n[i+1]:n[i-1]},highlightOption:function(t,e){var n,i=this.settings.classNames.dropdownItemActive;if(this.state.ddItemElm&&(this.state.ddItemElm.classList.remove(i),this.state.ddItemElm.removeAttribute("aria-selected")),!t)return this.state.ddItemData=null,this.state.ddItemElm=null,void this.input.autocomplete.suggest.call(this);n=this.dropdown.getSuggestionDataByNode(t),this.state.ddItemData=n,this.state.ddItemElm=t,t.classList.add(i),t.setAttribute("aria-selected",!0),e&&(t.parentNode.scrollTop=t.clientHeight+t.offsetTop-t.parentNode.clientHeight),this.settings.autoComplete&&(this.input.autocomplete.suggest.call(this,n),this.dropdown.position())},selectOption:function(t,e,n){var i=this,s=this.settings,a=s.dropdown.includeSelectedTags,o=s.dropdown,r=o.clearOnSelect,l=o.closeOnSelect;if(!t)return this.addTags(this.state.inputText,!0),void(l&&this.dropdown.hide());e=e||{};var d=t.getAttribute("value"),c="noMatch"==d,u="mix"==s.mode,h=this.suggestedListItems.find((function(t){var e;return(null!==(e=t.value)&&void 0!==e?e:t)==d}));if(this.trigger("dropdown:select",{data:h,elm:t,event:e}),h||c){if(this.state.editing){var g=this.normalizeTags([h])[0];h=s.transformTag.call(this,g)||g,this.onEditTagDone(null,ht({__isValid:!0},h))}else this[u?"addMixTags":"addTags"]([h||this.input.raw.call(this)],r);(u||this.DOM.input.parentNode)&&(setTimeout((function(){i.DOM.input.focus(),i.toggleFocusClass(!0)})),l&&setTimeout(this.dropdown.hide.bind(this)),a?n&&n():(t.addEventListener("transitionend",(function(){i.dropdown.fillHeaderFooter(),setTimeout((function(){t.remove(),i.dropdown.refilter(),n&&n()}),100)}),{once:!0}),t.classList.add(this.settings.classNames.dropdownItemHidden)))}else l&&setTimeout(this.dropdown.hide.bind(this))},selectAll:function(t){this.suggestedListItems.length=0,this.dropdown.hide(),this.dropdown.filterListItems("");var e=this.dropdown.filterListItems("");return t||(e=this.state.dropdown.suggestions),this.addTags(e,!0),this},filterListItems:function(t,e){var n,i,s,a,o,r,l=function(){var t,l,d=void 0,c=void 0;t=p[w],i=(null!=(l=Object)&&"undefined"!=typeof Symbol&&l[Symbol.hasInstance]?l[Symbol.hasInstance](t):t instanceof l)?p[w]:{value:p[w]};var f,m=Object.keys(i).some((function(t){return y.includes(t)}))?y:["value"];u.fuzzySearch&&!e.exact?(a=m.reduce((function(t,e){return t+" "+(i[e]||"")}),"").toLowerCase().trim(),u.accentedSearch&&(a=pt(a),r=pt(r)),d=0==a.indexOf(r),c=a===r,f=a,s=r.toLowerCase().split(" ").every((function(t){return f.includes(t.toLowerCase())}))):(d=!0,s=m.some((function(t){var n=""+(i[t]||"");return u.accentedSearch&&(n=pt(n),r=pt(r)),u.caseSensitive||(n=n.toLowerCase()),c=n===r,e.exact?n===r:0==n.indexOf(r)}))),o=!u.includeSelectedTags&&n.isTagDuplicate(ut(i)?i.value:i),s&&!o&&(c&&d?g.push(i):"startsWith"==u.sortby&&d?h.unshift(i):h.push(i))},d=this,c=this.settings,u=c.dropdown,h=(e=e||{},[]),g=[],p=c.whitelist,f=u.maxItems>=0?u.maxItems:1/0,m=u.includeSelectedTags,v="function"==typeof u.sortby,y=u.searchKeys,w=0;if(!(t="select"==c.mode&&this.value.length&&this.value[0][c.tagTextProp]==t?"":t)||!y.length){h=m?p:p.filter((function(t){return!d.isTagDuplicate(ut(t)?t.value:t)}));var b=v?u.sortby(h,r):h.slice(0,f);return this.state.dropdown.suggestions=b,b}for(r=u.caseSensitive?""+t:(""+t).toLowerCase();w[\r\n ]+\<").split(/>\s+<").trim():""},fillHeaderFooter:function(){var t=this.dropdown.filterListItems(this.state.dropdown.query),e=this.parseTemplate("dropdownHeader",[t]),n=this.parseTemplate("dropdownFooter",[t]),i=this.dropdown.getHeaderRef(),s=this.dropdown.getFooterRef();e&&(null==i||i.parentNode.replaceChild(e,i)),n&&(null==s||s.parentNode.replaceChild(n,s))},position:function(t){var e=this.settings.dropdown,n=this.dropdown.getAppendTarget();if("manual"!=e.position&&n){var i,s,a,o,r,l,d,c,u,h,g=this.DOM.dropdown,p=e.RTL,f=n===document.body,m=n===this.DOM.scope,v=f?window.pageYOffset:n.scrollTop,y=document.fullscreenElement||document.webkitFullscreenElement||document.documentElement,w=y.clientHeight,b=Math.max(y.clientWidth||0,window.innerWidth||0),T=b>480?e.position:"all",S=this.DOM["input"==T?"input":"scope"];if(t=t||g.clientHeight,this.state.dropdown.visible){if("text"==T?(a=(i=function(){var t=document.getSelection();if(t.rangeCount){var e,n,i=t.getRangeAt(0),s=i.startContainer,a=i.startOffset;if(a>0)return(n=document.createRange()).setStart(s,a-1),n.setEnd(s,a),{left:(e=n.getBoundingClientRect()).right,top:e.top,bottom:e.bottom};if(s.getBoundingClientRect)return s.getBoundingClientRect()}return{left:-9999,top:-9999}}()).bottom,s=i.top,o=i.left,r="auto"):(l=function(t){var e=0,n=0;for(t=t.parentNode;t&&t!=y;)e+=t.offsetTop||0,n+=t.offsetLeft||0,t=t.parentNode;return{top:e,left:n}}(n),i=S.getBoundingClientRect(),s=m?-1:i.top-l.top,a=(m?i.height:i.bottom-l.top)-1,o=m?-1:i.left-l.left,r=i.width+"px"),!f){var E=function(){for(var t=0,n=e.appendTarget.parentNode;n;)t+=n.scrollTop||0,n=n.parentNode;return t}();s+=E,a+=E}var x;s=Math.floor(s),a=Math.ceil(a),c=b-o<120,u=((d=null!==(x=e.placeAbove)&&void 0!==x?x:w-i.bottom\n ').concat(this.settings.templates.input.call(this),"\n ").concat(et,"\n ")},input:function(){var t=this.settings,e=t.placeholder||et;return"')},tag:function(t,e){var n=e.settings;return'\n \n
\n ').concat(t[n.tagTextProp]||t.value,"\n
\n
")},dropdown:function(t){var e=t.dropdown,n="manual"==e.position;return'
\n
\n
')},dropdownContent:function(t){var e=this.settings.templates,n=this.state.dropdown.suggestions;return"\n ".concat(e.dropdownHeader.call(this,n),"\n ").concat(t,"\n ").concat(e.dropdownFooter.call(this,n),"\n ")},dropdownItem:function(t){return"
').concat(t.mappedValue||t.value,"
")},dropdownHeader:function(t){return"
')},dropdownFooter:function(t){var e=t.length-this.settings.dropdown.maxItems;return e>0?"
\n ').concat(e," more items. Refine your search.\n
"):""},dropdownItemNoMatch:null};function jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],n=this.settings,i=this.events.callbacks,s=e?"addEventListener":"removeEventListener";if(!this.state.mainEvents||!e){for(var a in this.state.mainEvents=e,e&&!this.listeners.main&&(this.events.bindGlobal.call(this),this.settings.isJQueryPlugin&&jQuery(this.DOM.originalInput).on("tagify.removeAllTags",this.removeAllTags.bind(this))),t=this.listeners.main=this.listeners.main||{keydown:["input",i.onKeydown.bind(this)],click:["scope",i.onClickScope.bind(this)],dblclick:"select"!=n.mode&&["scope",i.onDoubleClickScope.bind(this)],paste:["input",i.onPaste.bind(this)],drop:["input",i.onDrop.bind(this)],compositionstart:["input",i.onCompositionStart.bind(this)],compositionend:["input",i.onCompositionEnd.bind(this)]})t[a]&&this.DOM[t[a][0]][s](a,t[a][1]);var o=this.listeners.main.inputMutationObserver||new MutationObserver(i.onInputDOMChange.bind(this));o.disconnect(),"mix"==n.mode&&o.observe(this.DOM.input,{childList:!0}),this.events.bindOriginaInputListener.call(this)}},bindOriginaInputListener:function(t){var e=(t||0)+500;this.listeners.main&&(clearInterval(this.listeners.main.originalInputValueObserverInterval),this.listeners.main.originalInputValueObserverInterval=setInterval(this.events.callbacks.observeOriginalInputValue.bind(this),e))},bindGlobal:function(t){var e,n=this.events.callbacks,i=t?"removeEventListener":"addEventListener";if(this.listeners&&(t||!this.listeners.global)){this.listeners.global=this.listeners.global||[{type:this.isIE?"keydown":"input",target:this.DOM.input,cb:n[this.isIE?"onInputIE":"onInput"].bind(this)},{type:"keydown",target:window,cb:n.onWindowKeyDown.bind(this)},{type:"focusin",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"focusout",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"click",target:document,cb:n.onClickAnywhere.bind(this),useCapture:!0}];var s=!0,a=!1,o=void 0;try{for(var r,l=this.listeners.global[Symbol.iterator]();!(s=(r=l.next()).done);s=!0)(e=r.value).target[i](e.type,e.cb,!!e.useCapture)}catch(t){a=!0,o=t}finally{try{s||null==l.return||l.return()}finally{if(a)throw o}}}},unbindGlobal:function(){this.events.bindGlobal.call(this,!0)},callbacks:{onFocusBlur:function(t){var e,n,i=this.settings,s=yt.call(this,t.relatedTarget),a=vt.call(this,t.relatedTarget),o=t.target.classList.contains(i.classNames.tagX),r="focusin"==t.type,l="focusout"==t.type;o&&"mix"!=i.mode&&this.DOM.input.focus(),s&&r&&!a&&!o&&this.toggleFocusClass(this.state.hasFocus=+new Date);var d=t.target?this.trim(this.DOM.input.textContent):"",c=null===(n=this.value)||void 0===n||null===(e=n[0])||void 0===e?void 0:e[i.tagTextProp],u=i.dropdown.enabled>=0,h={relatedTarget:t.relatedTarget},g=this.state.actions.selectOption&&(u||!i.dropdown.closeOnSelect),p=this.state.actions.addNew&&u;if(l){if(t.relatedTarget===this.DOM.scope)return this.dropdown.hide(),void this.DOM.input.focus();this.postUpdate(),i.onChangeAfterBlur&&this.triggerChangeEvent()}if(!(g||p||o))if(this.state.hasFocus=!(!r&&!s)&&+new Date,this.toggleFocusClass(this.state.hasFocus),"mix"!=i.mode){if(r){if(!i.focusable)return;var f=0===i.dropdown.enabled&&!this.state.dropdown.visible,m=!a||"select"===i.mode,v=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector);return this.trigger("focus",h),void(f&&m&&(this.dropdown.show(this.value.length?"":void 0),this.setRangeAtStartEnd(!1,v)))}if(l){if(this.trigger("blur",h),this.loading(!1),"select"==i.mode){if(this.value.length){var y=this.getTagElms()[0];d=this.trim(y.textContent)}c===d&&(d="")}d&&!this.state.actions.selectOption&&i.addTagOnBlur&&i.addTagOn.includes("blur")&&this.addTags(d,!0)}s||(this.DOM.input.removeAttribute("style"),this.dropdown.hide())}else r?this.trigger("focus",h):l&&(this.trigger("blur",h),this.loading(!1),this.dropdown.hide(),this.state.dropdown.visible=void 0,this.setStateSelection())},onCompositionStart:function(t){this.state.composing=!0},onCompositionEnd:function(t){this.state.composing=!1},onWindowKeyDown:function(t){var e,n=this.settings,i=document.activeElement,s=yt.call(this,i)&&this.DOM.scope.contains(i),a=i===this.DOM.input,o=s&&i.hasAttribute("readonly"),r=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),l=this.state.dropdown.visible;if(("Tab"===t.key&&l||this.state.hasFocus||s&&!o)&&!a){e=i.nextElementSibling;var d=t.target.classList.contains(n.classNames.tagX);switch(t.key){case"Backspace":n.readonly||this.state.editing||(this.removeTags(i),(e||this.DOM.input).focus());break;case"Enter":if(d)return void this.removeTags(t.target.parentNode);n.a11y.focusableTags&&vt.call(this,i)&&setTimeout(this.editTag.bind(this),0,i);break;case"ArrowDown":this.state.dropdown.visible||"mix"==n.mode||this.dropdown.show();break;case"Tab":null==r||r.focus()}}},onKeydown:function(t){var e=this,n=this.settings;if(!this.state.composing&&n.userInput){"select"==n.mode&&n.enforceWhitelist&&this.value.length&&"Tab"!=t.key&&t.preventDefault();var i=this.trim(t.target.textContent);this.trigger("keydown",{event:t}),n.hooks.beforeKeyDown(t,{tagify:this}).then((function(s){if("mix"==n.mode){switch(t.key){case"Left":case"ArrowLeft":e.state.actions.ArrowLeft=!0;break;case"Delete":case"Backspace":if(e.state.editing)return;var a=document.getSelection(),o="Delete"==t.key&&a.anchorOffset==(a.anchorNode.length||0),r=a.anchorNode.previousSibling,l=1==a.anchorNode.nodeType||!a.anchorOffset&&r&&1==r.nodeType&&a.anchorNode.previousSibling;!function(t){var e=document.createElement("div");t.replace(/\&#?[0-9a-z]+;/gi,(function(t){return e.innerHTML=t,e.innerText}))}(e.DOM.input.innerHTML);var d,c,u,h=e.getTagElms(),g=1===a.anchorNode.length&&a.anchorNode.nodeValue==String.fromCharCode(8203);if("edit"==n.backspace&&l)return d=1==a.anchorNode.nodeType?null:a.anchorNode.previousElementSibling,setTimeout(e.editTag.bind(e),0,d),void t.preventDefault();if(ft()&&Ht(l,Element))return u=dt(l),l.hasAttribute("readonly")||l.remove(),e.DOM.input.focus(),void setTimeout((function(){St(u),e.DOM.input.click()}));if("BR"==a.anchorNode.nodeName)return;if((o||l)&&1==a.anchorNode.nodeType?c=0==a.anchorOffset?o?h[0]:null:h[Math.min(h.length,a.anchorOffset)-1]:o?c=a.anchorNode.nextElementSibling:Ht(l,Element)&&(c=l),3==a.anchorNode.nodeType&&!a.anchorNode.nodeValue&&a.anchorNode.previousElementSibling&&t.preventDefault(),(l||o)&&!n.backspace)return void t.preventDefault();if("Range"!=a.type&&!a.anchorOffset&&a.anchorNode==e.DOM.input&&"Delete"!=t.key)return void t.preventDefault();if("Range"!=a.type&&c&&c.hasAttribute("readonly"))return void St(dt(c));"Delete"==t.key&&g&&Tt(a.anchorNode.nextSibling)&&e.removeTags(a.anchorNode.nextSibling)}return!0}var p="manual"==n.dropdown.position;switch(t.key){case"Backspace":"select"==n.mode&&n.enforceWhitelist&&e.value.length?e.removeTags():e.state.dropdown.visible&&"manual"!=n.dropdown.position||""!=t.target.textContent&&8203!=i.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0));break;case"Esc":case"Escape":if(e.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":e.state.dropdown.visible||e.dropdown.show();break;case"ArrowRight":var f=e.state.inputSuggestion||e.state.ddItemData;if(f&&n.autoComplete.rightKey)return void e.addTags([f],!0);break;case"Tab":return!0;case"Enter":if(e.state.dropdown.visible&&!p)return;t.preventDefault();var m=e.state.autoCompleteData||i;setTimeout((function(){e.state.dropdown.visible&&!p||e.state.actions.selectOption||!n.addTagOn.includes(t.key.toLowerCase())||(e.addTags([m],!0),e.state.autoCompleteData=null)}))}})).catch((function(t){return t}))}},onInput:function(t){this.postUpdate();var e=this.settings;if("mix"==e.mode)return this.events.callbacks.onMixTagsInput.call(this,t);var n=this.input.normalize.call(this,void 0,{trim:!1}),i=n.length>=e.dropdown.enabled,s={value:n,inputElm:this.DOM.input},a=this.validateTag({value:n});"select"==e.mode&&this.toggleScopeValidation(a),s.isValid=a,this.state.inputText!=n&&(this.input.set.call(this,n,!1),-1!=n.search(e.delimiters)?this.addTags(n)&&this.input.set.call(this):e.dropdown.enabled>=0&&this.dropdown[i?"show":"hide"](n),this.trigger("input",s))},onMixTagsInput:function(t){var e,n,i,s,a,o,r,l,d=this,c=this.settings,u=this.value.length,h=this.getTagElms(),g=document.createDocumentFragment(),p=window.getSelection().getRangeAt(0),f=[].map.call(h,(function(t){return Tt(t).value}));if("deleteContentBackward"==t.inputType&&ft()&&this.events.callbacks.onKeydown.call(this,{target:t.target,key:"Backspace"}),Et(this.getTagElms()),this.value.slice().forEach((function(t){t.readonly&&!f.includes(t.value)&&g.appendChild(d.createTagElem(t))})),g.childNodes.length&&(p.insertNode(g),this.setRangeAtStartEnd(!1,g.lastChild)),h.length!=u)return this.value=[].map.call(this.getTagElms(),(function(t){return Tt(t)})),void this.update({withoutChangeEvent:!0});if(this.hasMaxTags())return!0;if(window.getSelection&&(o=window.getSelection()).rangeCount>0&&3==o.anchorNode.nodeType){if((p=o.getRangeAt(0).cloneRange()).collapse(!0),p.setStart(o.focusNode,0),i=(e=p.toString().slice(0,p.endOffset)).split(c.pattern).length-1,(n=e.match(c.pattern))&&(s=e.slice(e.lastIndexOf(n[n.length-1]))),s){if(this.state.actions.ArrowLeft=!1,this.state.tag={prefix:s.match(c.pattern)[0],value:s.replace(c.pattern,"")},this.state.tag.baseOffset=o.baseOffset-this.state.tag.value.length,l=this.state.tag.value.match(c.delimiters))return this.state.tag.value=this.state.tag.value.replace(c.delimiters,""),this.state.tag.delimiters=l[0],this.addTags(this.state.tag.value,c.dropdown.clearOnSelect),void this.dropdown.hide();a=this.state.tag.value.length>=c.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||i500||!e.focusable)?this.state.dropdown.visible?this.dropdown.hide():0===e.dropdown.enabled&&"mix"!=e.mode&&this.dropdown.show(this.value.length?"":void 0):"select"!=e.mode||0!==e.dropdown.enabled||this.state.dropdown.visible||(this.events.callbacks.onDoubleClickScope.call(this,function(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n.push.apply(n,i)}return n}(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t}(function(t){for(var e=1;e=this.settings.dropdown.enabled&&(this.state.editing&&(this.state.editing.value=o),this.dropdown.show(o)),this.trigger("edit:input",{tag:i,index:s,data:ht({},this.value[s],{newValue:o}),event:e})},onEditTagPaste:function(t,e){var n=(e.clipboardData||window.clipboardData).getData("Text");e.preventDefault();var i=bt(n);this.setRangeAtStartEnd(!1,i)},onEditTagClick:function(t,e){this.events.callbacks.onClickScope.call(this,e)},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t,e){var n=vt.call(this,e.relatedTarget);if("select"==this.settings.mode&&n&&e.relatedTarget.contains(e.target))this.dropdown.hide();else if(this.state.editing&&(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(document.activeElement)||this.trigger("blur",{}),this.DOM.scope.contains(t))){var i,s,a,o=this.settings,r=t.closest("."+o.classNames.tag),l=Tt(r),d=this.input.normalize.call(this,t),c=(qt(i={},o.tagTextProp,d),qt(i,"__tagId",l.__tagId),i),u=l.__originalData,h=this.editTagChangeDetected(ht(l,c)),g=this.validateTag(c);if(d)if(h){var p;if(s=this.hasMaxTags(),a=ht({},u,(qt(p={},o.tagTextProp,this.trim(d)),qt(p,"__isValid",g),p)),o.transformTag.call(this,a,u),!0!==(g=(!s||!0===u.__isValid)&&this.validateTag(a))){if(this.trigger("invalid",{data:a,tag:r,message:g}),o.editTags.keepInvalid)return;o.keepInvalidTags?a.__isValid=g:a=u}else o.keepInvalidTags&&(delete a.title,delete a["aria-invalid"],delete a.class);this.onEditTagDone(r,a)}else this.onEditTagDone(r,u);else this.onEditTagDone(r)}},onEditTagkeydown:function(t,e){if(!this.state.composing)switch(this.trigger("edit:keydown",{event:t}),t.key){case"Esc":case"Escape":this.state.editing=!1,e.__tagifyTagData.__originalData.value?e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML,e):e.remove();break;case"Enter":case"Tab":t.preventDefault(),setTimeout((function(){return t.target.blur()}),0)}},onDoubleClickScope:function(t){var e=t.target.closest("."+this.settings.classNames.tag);if(e){var n,i,s=Tt(e),a=this.settings;!1!==(null==s?void 0:s.editable)&&(n=e.classList.contains(this.settings.classNames.tagEditing),i=e.hasAttribute("readonly"),a.readonly||n||i||!this.settings.editTags||!a.userInput||(this.events.callbacks.onEditTagFocus.call(this,e),this.editTag(e)),this.toggleFocusClass(!0),"select"!=a.mode&&this.trigger("dblclick",{tag:e,index:this.getNodeIndex(e),data:Tt(e)}))}},onInputDOMChange:function(t){var e=this;t.forEach((function(t){t.addedNodes.forEach((function(t){if("

"==t.outerHTML)t.replaceWith(document.createElement("br"));else if(1==t.nodeType&&t.querySelector(e.settings.classNames.tagSelector)){var n,i=document.createTextNode("");3==t.childNodes[0].nodeType&&"BR"!=t.previousSibling.nodeName&&(i=document.createTextNode("\n")),(n=t).replaceWith.apply(n,Rt([i].concat(Rt(Rt(t.childNodes).slice(0,-1))))),St(i)}else if(vt.call(e,t)){var s;if(3!=(null===(s=t.previousSibling)||void 0===s?void 0:s.nodeType)||t.previousSibling.textContent||t.previousSibling.remove(),t.previousSibling&&"BR"==t.previousSibling.nodeName){t.previousSibling.replaceWith("\n​");for(var a=t.nextSibling,o="";a;)o+=a.textContent,a=a.nextSibling;o.trim()&&St(t.previousSibling)}else t.previousSibling&&!Tt(t.previousSibling)||t.before("​")}})),t.removedNodes.forEach((function(t){t&&"BR"==t.nodeName&&vt.call(e,n)&&(e.removeTags(n),e.fixFirefoxLastTagNoCaret())}))}));var n=this.DOM.input.lastChild;n&&""==n.nodeValue&&n.remove(),n&&"BR"==n.nodeName||this.DOM.input.appendChild(document.createElement("br"))}}};function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.map((t=>t.value)),dropdown:{enabled:e.dropdownSuggestionsStartAfter,maxItems:e.dropdownMaxItems,closeOnSelect:e.dropdownCloseOnSelect,highlightFirst:e.highlight},transformTag(t){t.display||(t.display=t.value,t.value=encodeURIComponent(t.value)),t.display=t.display.replace(//g,">")},templates:{wrapper(t,e){return`
\n ${this.settings.templates.input.call(this)}\n ​\n
`},tag:t=>`
\n \n
\n ${t.display}\n
\n
`,dropdownItem:t=>`
\n ${t.display}\n
`}}}(e.id,n));o.addTags(i),void 0!==s&&o.on("input",(t=>{!function(t,e,n,i,s,a){Qt instanceof AbortController&&Qt.abort(),Qt=new AbortController,t.whitelist=null,void 0!==Gt&&(t.DOM.scope.ownerDocument.defaultView.clearTimeout(Gt),Gt=void 0),s.detail.value.length{const e=s.detail.value;n.writeParameter(i,e),t.loading(!0),fetch(n.getUrl().toString(),{signal:Qt.signal}).then((t=>t.json())).catch((()=>{})).then((n=>{t.whitelist=n,t.loading(!1).dropdown.show(e)}))}),a))}(o,n.suggestionStarts,s,a,t,n.autocompleteTriggerTimeout)}))}Jt.prototype={_dropdown:Lt,placeCaretAfterNode:St,getSetTagData:Tt,helpers:{sameStr:at,removeCollectionProp:ot,omit:rt,isObject:ut,parseHTML:lt,escapeHTML:ct,extend:ht,concatWithoutDups:gt,getUID:mt,isNodeTag:vt},customEventsList:["change","add","remove","invalid","input","paste","click","keydown","focus","blur","edit:input","edit:beforeUpdate","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select","dropdown:updated","dropdown:noMatch","dropdown:scroll"],dataProps:["__isValid","__removed","__originalData","__originalHTML","__tagId"],trim:function(t){return this.settings.trim&&t&&"string"==typeof t?t.trim():t},parseHTML:lt,templates:Bt,parseTemplate:function(t,e){return lt((t=this.settings.templates[t]||t).apply(this,e))},set whitelist(t){var e=t&&Array.isArray(t);this.settings.whitelist=e?t:[],this.setPersistedData(e?t:[],"whitelist")},get whitelist(){return this.settings.whitelist},set userInput(t){this.settings.userInput=!!t,this.setContentEditable(!!t)},get userInput(){return this.settings.userInput},generateClassSelectors:function(t){var e=function(e){var n=e;Object.defineProperty(t,n+"Selector",{get:function(){return"."+this[n].split(" ")[0]}})};for(var n in t)e(n)},applySettings:function(t,e){var n,i;xt.templates=this.templates;var s=ht({},xt,"mix"==e.mode?{dropdown:{position:"text"}}:{}),a=this.settings=ht({},s,e);if(a.disabled=t.hasAttribute("disabled"),a.readonly=a.readonly||t.hasAttribute("readonly"),a.placeholder=ct(t.getAttribute("placeholder")||a.placeholder||""),a.required=t.hasAttribute("required"),this.generateClassSelectors(a.classNames),this.isIE&&(a.autoComplete=!1),["whitelist","blacklist"].forEach((function(e){var n=t.getAttribute("data-"+e);n&&zt(n=n.split(a.delimiters),Array)&&(a[e]=n)})),"autoComplete"in e&&!ut(e.autoComplete)&&(a.autoComplete=xt.autoComplete,a.autoComplete.enabled=e.autoComplete),"mix"==a.mode&&(a.pattern=a.pattern||/@/,a.autoComplete.rightKey=!0,a.delimiters=e.delimiters||null,a.tagTextProp&&!a.dropdown.searchKeys.includes(a.tagTextProp)&&a.dropdown.searchKeys.push(a.tagTextProp)),t.pattern)try{a.pattern=new RegExp(t.pattern)}catch(t){}if(a.delimiters){a._delimiters=a.delimiters;try{a.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}}a.disabled&&(a.userInput=!1),this.TEXTS=Kt({},Pt,a.texts||{}),"select"==a.mode&&(a.dropdown.includeSelectedTags=!0),("select"!=a.mode||(null===(n=e.dropdown)||void 0===n?void 0:n.enabled))&&a.userInput||(a.dropdown.enabled=0),a.dropdown.appendTarget=(null===(i=e.dropdown)||void 0===i?void 0:i.appendTarget)||document.body,void 0===a.dropdown.includeSelectedTags&&(a.dropdown.includeSelectedTags=a.duplicates);var o=this.getPersistedData("whitelist");Array.isArray(o)&&(this.whitelist=Array.isArray(a.whitelist)?gt(a.whitelist,o):o)},getAttributes:function(t){var e,n=this.getCustomAttributes(t),i="";for(e in n)i+=" "+e+(void 0!==t[e]?'="'.concat(n[e],'"'):"");return i},getCustomAttributes:function(t){if(!ut(t))return"";var e,n={};for(e in t)"__"!=e.slice(0,2)&&"class"!=e&&t.hasOwnProperty(e)&&void 0!==t[e]&&(n[e]=ct(t[e]));return n},setStateSelection:function(){var t=window.getSelection(),e={anchorOffset:t.anchorOffset,anchorNode:t.anchorNode,range:t.getRangeAt&&t.rangeCount&&t.getRangeAt(0)};return this.state.selection=e,e},getCSSVars:function(){var t,e,n=getComputedStyle(this.DOM.scope,null);this.CSSVars={tagHideTransition:(t=function(t){if(!t)return{};var e=(t=t.trim().split(" ")[0]).split(/\d+/g).filter((function(t){return t})).pop().trim();return{value:+t.split(e).filter((function(t){return t}))[0].trim(),unit:e}}(("tag-hide-transition",n.getPropertyValue("--tag-hide-transition"))),e=t.value,"s"==t.unit?1e3*e:e)}},build:function(t){var e=this.DOM,n=t.closest("label");this.settings.mixMode.integrated?(e.originalInput=null,e.scope=t,e.input=t):(e.originalInput=t,e.originalInput_tabIndex=t.tabIndex,e.scope=this.parseTemplate("wrapper",[t,this.settings]),e.input=e.scope.querySelector(this.settings.classNames.inputSelector),t.parentNode.insertBefore(e.scope,t),t.tabIndex=-1),n&&n.setAttribute("for","")},destroy:function(){var t;this.events.unbindGlobal.call(this),null===(t=this.DOM.scope.parentNode)||void 0===t||t.removeChild(this.DOM.scope),this.DOM.originalInput.tabIndex=this.DOM.originalInput_tabIndex,delete this.DOM.originalInput.__tagify,this.dropdown.hide(!0),this.removeAllCustomListeners(),clearTimeout(this.dropdownHide__bindEventsTimeout),clearInterval(this.listeners.main.originalInputValueObserverInterval)},loadOriginalValues:function(t){var e,n=this.settings;if(this.state.blockChangeEvent=!0,void 0===t){var i=this.getPersistedData("value");t=i&&!this.DOM.originalInput.value?i:n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value}if(this.removeAllTags(),t)if("mix"==n.mode)this.parseMixTags(t),(e=this.DOM.input.lastChild)&&"BR"==e.tagName||this.DOM.input.insertAdjacentHTML("beforeend","
");else{try{zt(JSON.parse(t),Array)&&(t=JSON.parse(t))}catch(t){}this.addTags(t,!0).forEach((function(t){return t&&t.classList.add(n.classNames.tagNoAnimation)}))}else this.postUpdate();this.state.lastOriginalValueReported=n.mixMode.integrated?"":this.DOM.originalInput.value},cloneEvent:function(t){var e={};for(var n in t)"path"!=n&&(e[n]=t[n]);return e},loading:function(t){return this.state.isLoading=t,this.DOM.scope.classList[t?"add":"remove"](this.settings.classNames.scopeLoading),this},tagLoading:function(t,e){return t&&t.classList[e?"add":"remove"](this.settings.classNames.tagLoading),this},toggleClass:function(t,e){"string"==typeof t&&this.DOM.scope.classList.toggle(t,e)},toggleScopeValidation:function(t){var e=!0===t||void 0===t;!this.settings.required&&t&&t===this.TEXTS.empty&&(e=!0),this.toggleClass(this.settings.classNames.tagInvalid,!e),this.DOM.scope.title=e?"":t},toggleFocusClass:function(t){this.toggleClass(this.settings.classNames.focus,!!t)},setPlaceholder:function(t){var e=this;["data","aria"].forEach((function(n){return e.DOM.input.setAttribute("".concat(n,"-placeholder"),t)}))},triggerChangeEvent:function(){if(!this.settings.mixMode.integrated){var t=this.DOM.originalInput,e=this.state.lastOriginalValueReported!==t.value,n=new CustomEvent("change",{bubbles:!0});e&&(this.state.lastOriginalValueReported=t.value,n.simulated=!0,t._valueTracker&&t._valueTracker.setValue(Math.random()),t.dispatchEvent(n),this.trigger("change",this.state.lastOriginalValueReported),t.value=this.state.lastOriginalValueReported)}},events:$t,fixFirefoxLastTagNoCaret:function(){},setRangeAtStartEnd:function(t,e){if(e){t="number"==typeof t?t:!!t,e=e.lastChild||e;var n=document.getSelection();if(zt(n.focusNode,Element)&&!this.DOM.input.contains(n.focusNode))return!0;try{n.rangeCount>=1&&["Start","End"].forEach((function(i){return n.getRangeAt(0)["set"+i](e,t||e.length)}))}catch(t){console.warn(t)}}},insertAfterTag:function(t,e){if(e=e||this.settings.mixMode.insertAfterTag,t&&t.parentNode&&e)return e="string"==typeof e?document.createTextNode(e):e,t.parentNode.insertBefore(e,t.nextSibling),e},editTagChangeDetected:function(t){var e=t.__originalData;for(var n in e)if(!this.dataProps.includes(n)&&t[n]!=e[n])return!0;return!1},getTagTextNode:function(t){return t.querySelector(this.settings.classNames.tagTextSelector)},setTagTextNode:function(t,e){this.getTagTextNode(t).innerHTML=ct(e)},editTag:function(t,e){var n=this;t=t||this.getLastTag(),e=e||{};var i=this.settings,s=this.getTagTextNode(t),a=this.getNodeIndex(t),o=Tt(t),r=this.events.callbacks,l=!0,d="select"==i.mode;if(!d&&this.dropdown.hide(),s){if(!zt(o,Object)||!("editable"in o)||o.editable)return o=Tt(t,{__originalData:ht({},o),__originalHTML:t.cloneNode(!0)}),Tt(o.__originalHTML,o.__originalData),s.setAttribute("contenteditable",!0),t.classList.add(i.classNames.tagEditing),this.events.callbacks.onEditTagFocus.call(this,t),s.addEventListener("click",r.onEditTagClick.bind(this,t)),s.addEventListener("blur",r.onEditTagBlur.bind(this,this.getTagTextNode(t))),s.addEventListener("input",r.onEditTagInput.bind(this,s)),s.addEventListener("paste",r.onEditTagPaste.bind(this,s)),s.addEventListener("keydown",(function(e){return r.onEditTagkeydown.call(n,e,t)})),s.addEventListener("compositionstart",r.onCompositionStart.bind(this)),s.addEventListener("compositionend",r.onCompositionEnd.bind(this)),e.skipValidation||(l=this.editTagToggleValidity(t)),s.originalIsValid=l,this.trigger("edit:start",{tag:t,index:a,data:o,isValid:l}),s.focus(),!d&&this.setRangeAtStartEnd(!1,s),0===i.dropdown.enabled&&!d&&this.dropdown.show(),this.state.hasFocus=!0,this}else st.warn("Cannot find element in Tag template: .",i.classNames.tagTextSelector)},editTagToggleValidity:function(t,e){var n;if(e=e||Tt(t))return(n=!("__isValid"in e)||!0===e.__isValid)||this.removeTagsFromValue(t),this.update(),t.classList.toggle(this.settings.classNames.tagNotAllowed,!n),e.__isValid=n,e.__isValid;st.warn("tag has no data: ",t,e)},onEditTagDone:function(t,e){t=t||this.state.editing.scope,e=e||{};var n,i,s=this.settings,a={tag:t,index:this.getNodeIndex(t),previousData:Tt(t),data:e};this.trigger("edit:beforeUpdate",a,{cloneData:!1}),this.state.editing=!1,delete e.__originalData,delete e.__originalHTML,t&&t.parentNode&&((void 0!==(i=e[s.tagTextProp])?null===(n=(i+="").trim)||void 0===n?void 0:n.call(i):s.tagTextProp in e?void 0:e.value)?(t=this.replaceTag(t,e),this.editTagToggleValidity(t,e),s.a11y.focusableTags?t.focus():"select"!=s.mode&&St(t)):this.removeTags(t)),this.trigger("edit:updated",a),s.dropdown.closeOnSelect&&this.dropdown.hide(),this.settings.keepInvalidTags&&this.reCheckInvalidTags()},replaceTag:function(t,e){e&&""!==e.value&&void 0!==e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&ht(e,this.getInvalidTagAttrs(e,e.__isValid));var n=this.createTagElem(e);return t.parentNode.replaceChild(n,t),this.updateValueByDOMTags(),n},updateValueByDOMTags:function(){var t=this;this.value.length=0;var e=this.settings.classNames,n=[e.tagNotAllowed.split(" ")[0],e.tagHide];[].forEach.call(this.getTagElms(),(function(e){Xt(e.classList).some((function(t){return n.includes(t)}))||t.value.push(Tt(e))})),this.update(),this.dropdown.refilter()},injectAtCaret:function(t,e){var n;if(e=e||(null===(n=this.state.selection)||void 0===n?void 0:n.range),"string"==typeof t&&(t=document.createTextNode(t)),!e&&t)return this.appendMixTags(t),this;var i=bt(t,e);return this.setRangeAtStartEnd(!1,i),this.updateValueByDOMTags(),this.update(),this},input:{set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.settings,i=n.dropdown.closeOnSelect;this.state.inputText=t,e&&(this.DOM.input.innerHTML=ct(""+t),t&&this.toggleClass(n.classNames.empty,!this.DOM.input.innerHTML)),!t&&i&&this.dropdown.hide.bind(this),this.input.autocomplete.suggest.call(this),this.input.validate.call(this)},raw:function(){return this.DOM.input.textContent},validate:function(){var t=!this.state.inputText||!0===this.validateTag({value:this.state.inputText});return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid,!t),t},normalize:function(t,e){var n=t||this.DOM.input,i=[];n.childNodes.forEach((function(t){return 3==t.nodeType&&i.push(t.nodeValue)})),i=i.join("\n");try{i=i.replace(/(?:\r\n|\r|\n)/g,this.settings.delimiters.source.charAt(0))}catch(t){}return i=i.replace(/\s/g," "),(null==e?void 0:e.trim)?this.trim(i):i},autocomplete:{suggest:function(t){if(this.settings.autoComplete.enabled){"object"!=typeof(t=t||{value:""})&&(t={value:t});var e=this.dropdown.getMappedValue(t);if("number"!=typeof e){var n=this.state.inputText.toLowerCase(),i=e.substr(0,this.state.inputText.length).toLowerCase(),s=e.substring(this.state.inputText.length);e&&this.state.inputText&&i==n?(this.DOM.input.setAttribute("data-suggest",s),this.state.inputSuggestion=t):(this.DOM.input.removeAttribute("data-suggest"),delete this.state.inputSuggestion)}}},set:function(t){var e=this.DOM.input.getAttribute("data-suggest"),n=t||(e?this.state.inputText+e:null);return!!n&&("mix"==this.settings.mode?this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix+n)):(this.input.set.call(this,n),this.setRangeAtStartEnd(!1,this.DOM.input)),this.input.autocomplete.suggest.call(this),this.dropdown.hide(),!0)}}},getTagIdx:function(t){return this.value.findIndex((function(e){return e.__tagId==(t||{}).__tagId}))},getNodeIndex:function(t){var e=0;if(t)for(;t=t.previousElementSibling;)e++;return e},getTagElms:function(){for(var t=arguments.length,e=new Array(t),n=0;n=this.settings.maxTags&&this.TEXTS.exceed},setReadonly:function(t,e){var n=this.settings;this.DOM.scope.contains(document.activeElement)&&document.activeElement.blur(),n[e||"readonly"]=t,this.DOM.scope[(t?"set":"remove")+"Attribute"](e||"readonly",!0),this.settings.userInput=!0,this.setContentEditable(!t)},setContentEditable:function(t){this.DOM.input.contentEditable=t,this.DOM.input.tabIndex=t?0:-1},setDisabled:function(t){this.setReadonly(t,"disabled")},normalizeTags:function(t){var e=this,n=this.settings,i=n.whitelist,s=n.delimiters,a=n.mode,o=n.tagTextProp,r=[],l=!!i&&zt(i[0],Object),d=Array.isArray(t),c=d&&t[0].value,u=function(t){return(t+"").split(s).reduce((function(t,n){var i,s=e.trim(n);return s&&t.push((Wt(i={},o,s),Wt(i,"value",s),i)),t}),[])};if("number"==typeof t&&(t=t.toString()),"string"==typeof t){if(!t.trim())return[];t=u(t)}else d&&(t=t.reduce((function(t,n){if(ut(n)){var i=ht({},n);o in i||(o="value"),i[o]=e.trim(i[o]),(i[o]||0===i[o])&&t.push(i)}else if(null!=n&&""!==n&&void 0!==n){var s;(s=t).push.apply(s,Xt(u(n)))}return t}),[]));return l&&!c&&(t.forEach((function(t){var n=r.map((function(t){return t.value})),i=e.dropdown.filterListItems.call(e,t[o],{exact:!0});e.settings.duplicates||(i=i.filter((function(t){return!n.includes(t.value)})));var s=i.length>1?e.getWhitelistItem(t[o],o,i):i[0];s&&zt(s,Object)?r.push(s):"mix"!=a&&(null==t.value&&(t.value=t[o]),r.push(t))})),r.length&&(t=r)),t},parseMixTags:function(t){var e=this,n=this.settings,i=n.mixTagsInterpolator,s=n.duplicates,a=n.transformTag,o=n.enforceWhitelist,r=n.maxTags,l=n.tagTextProp,d=[];t=t.split(i[0]).map((function(t,n){var c,u,h,g=t.split(i[1]),p=g[0],f=d.length==r;try{if(p==+p)throw Error;u=JSON.parse(p)}catch(t){u=e.normalizeTags(p)[0]||{value:p}}if(a.call(e,u),f||!(g.length>1)||o&&!e.isTagWhitelisted(u.value)||!s&&e.isTagDuplicate(u.value)){if(t)return n?i[0]+t:t}else u[c=u[l]?l:"value"]=e.trim(u[c]),h=e.createTagElem(u),d.push(u),h.classList.add(e.settings.classNames.tagNoAnimation),g[0]=h.outerHTML,e.value.push(u);return g.join("")})).join(""),this.DOM.input.innerHTML=t,this.DOM.input.appendChild(document.createTextNode("")),this.DOM.input.normalize();var c=this.getTagElms();return c.forEach((function(t,e){return Tt(t,d[e])})),this.update({withoutChangeEvent:!0}),Et(c,this.state.hasFocus),t},replaceTextWithNode:function(t,e){if(this.state.tag||e){e=e||this.state.tag.prefix+this.state.tag.value;var n,i,s=this.state.selection||window.getSelection(),a=s.anchorNode,o=this.state.tag.delimiters?this.state.tag.delimiters.length:0;return a.splitText(s.anchorOffset-o),-1==(n=a.nodeValue.lastIndexOf(e))||(i=a.splitText(n),t&&a.parentNode.replaceChild(t,i)),!0}},prepareNewTagNode:function(t,e){e=e||{};var n=this.settings,i=[],s={},a=Object.assign({},t,{value:t.value+""});if(t=Object.assign({},a),n.transformTag.call(this,t),t.__isValid=this.hasMaxTags()||this.validateTag(t),!0!==t.__isValid){if(e.skipInvalid)return;if(ht(s,this.getInvalidTagAttrs(t,t.__isValid),{__preInvalidData:a}),t.__isValid==this.TEXTS.duplicate&&this.flashTag(this.getTagElmByValue(t.value)),!n.createInvalidTags)return void i.push(t.value)}return"readonly"in t&&(t.readonly?s["aria-readonly"]=!0:delete t.readonly),{tagElm:this.createTagElem(t,s),tagData:t,aggregatedInvalidInput:i}},postProcessNewTagNode:function(t,e){var n=this,i=this.settings,s=e.__isValid;s&&!0===s?this.value.push(e):(this.trigger("invalid",{data:e,index:this.value.length,tag:t,message:s}),i.keepInvalidTags||setTimeout((function(){return n.removeTags(t,!0)}),1e3)),this.dropdown.position()},selectTag:function(t,e){var n=this;if(!this.settings.enforceWhitelist||this.isTagWhitelisted(e.value)){this.state.actions.selectOption&&setTimeout((function(){return n.setRangeAtStartEnd(!1,n.DOM.input)}));var i=this.getLastTag();return i?this.replaceTag(i,e):this.appendTag(t),this.value[0]=e,this.update(),this.trigger("add",{tag:t,data:e}),[t]}},addEmptyTag:function(t){var e=ht({value:""},t||{}),n=this.createTagElem(e);Tt(n,e),this.appendTag(n),this.editTag(n,{skipValidation:!0}),this.toggleFocusClass(!0)},addTags:function(t,e,n){var i=this,s=[],a=this.settings,o=[],r=document.createDocumentFragment(),l=[];if(!t||0==t.length)return s;switch(t=this.normalizeTags(t),a.mode){case"mix":return this.addMixTags(t);case"select":e=!1,this.removeAllTags()}return this.DOM.input.removeAttribute("style"),t.forEach((function(t){var e=i.prepareNewTagNode(t,{skipInvalid:n||a.skipInvalid});if(e){var d=e.tagElm;if(t=e.tagData,o=e.aggregatedInvalidInput,s.push(d),"select"==a.mode)return i.selectTag(d,t);r.appendChild(d),i.postProcessNewTagNode(d,t),l.push({tagElm:d,tagData:t})}})),this.appendTag(r),l.forEach((function(t){var e=t.tagElm,n=t.tagData;return i.trigger("add",{tag:e,index:i.getTagIdx(n),data:n})})),this.update(),t.length&&e&&(this.input.set.call(this,a.createInvalidTags?"":o.join(a._delimiters)),this.setRangeAtStartEnd(!1,this.DOM.input)),this.dropdown.refilter(),s},addMixTags:function(t){var e=this;if((t=this.normalizeTags(t))[0].prefix||this.state.tag)return this.prefixedTextToTag(t[0]);var n=document.createDocumentFragment();return t.forEach((function(t){var i=e.prepareNewTagNode(t);n.appendChild(i.tagElm),e.insertAfterTag(i.tagElm),e.postProcessNewTagNode(i.tagElm,i.tagData)})),this.appendMixTags(n),n.children},appendMixTags:function(t){var e=!!this.state.selection;e?this.injectAtCaret(t):(this.DOM.input.focus(),(e=this.setStateSelection()).range.setStart(this.DOM.input,e.range.endOffset),e.range.setEnd(this.DOM.input,e.range.endOffset),this.DOM.input.appendChild(t),this.updateValueByDOMTags(),this.update())},prefixedTextToTag:function(t){var e,n,i,s=this,a=this.settings,o=null===(e=this.state.tag)||void 0===e?void 0:e.delimiters;if(t.prefix=t.prefix||this.state.tag?this.state.tag.prefix:(a.pattern.source||a.pattern)[0],i=this.prepareNewTagNode(t),n=i.tagElm,this.replaceTextWithNode(n)||this.DOM.input.appendChild(n),setTimeout((function(){return n.classList.add(s.settings.classNames.tagNoAnimation)}),300),this.update(),!o){var r=this.insertAfterTag(n)||n;setTimeout(St,0,r)}return this.state.tag=null,this.postProcessNewTagNode(n,i.tagData),n},appendTag:function(t){var e=this.DOM,n=e.input;e.scope.insertBefore(t,n)},createTagElem:function(t,e){t.__tagId=mt();var n,i=ht({},t,Kt({value:ct(t.value+"")},e));return function(t){for(var e,n=document.createNodeIterator(t,NodeFilter.SHOW_TEXT,null,!1);e=n.nextNode();)e.textContent.trim()||e.parentNode.removeChild(e)}(n=this.parseTemplate("tag",[i,this])),Tt(n,t),n},reCheckInvalidTags:function(){var t=this,e=this.settings;this.getTagElms(e.classNames.tagNotAllowed).forEach((function(n,i){var s=Tt(n),a=t.hasMaxTags(),o=t.validateTag(s),r=!0===o&&!a;if("select"==e.mode&&t.toggleScopeValidation(o),r)return s=s.__preInvalidData?s.__preInvalidData:{value:s.value},t.replaceTag(n,s);n.title=a||o}))},removeTags:function(t,e,n){var i,s=this,a=this.settings;if(t=t&&zt(t,HTMLElement)?[t]:zt(t,Array)?t:t?[t]:[this.getLastTag()].filter((function(t){return t})),i=t.reduce((function(t,e){e&&"string"==typeof e&&(e=s.getTagElmByValue(e));var n=Tt(e);return e&&n&&!n.readonly&&t.push({node:e,idx:s.getTagIdx(n),data:Tt(e,{__removed:!0})}),t}),[]),n="number"==typeof n?n:this.CSSVars.tagHideTransition,"select"==a.mode&&(n=0,this.input.set.call(this)),1==i.length&&"select"!=a.mode&&i[0].node.classList.contains(a.classNames.tagNotAllowed)&&(e=!0),i.length)return a.hooks.beforeRemoveTag(i,{tagify:this}).then((function(){var t=function(t){t.node.parentNode&&(t.node.parentNode.removeChild(t.node),e?a.keepInvalidTags&&this.trigger("remove",{tag:t.node,index:t.idx}):(this.trigger("remove",{tag:t.node,index:t.idx,data:t.data}),this.dropdown.refilter(),this.dropdown.position(),this.DOM.input.normalize(),a.keepInvalidTags&&this.reCheckInvalidTags()))};n&&n>10&&1==i.length?function(e){e.node.style.width=parseFloat(window.getComputedStyle(e.node).width)+"px",document.body.clientTop,e.node.classList.add(a.classNames.tagHide),setTimeout(t.bind(this),n,e)}.call(s,i[0]):i.forEach(t.bind(s)),e||(s.removeTagsFromValue(i.map((function(t){return t.node}))),s.update(),"select"==a.mode&&a.userInput&&s.setContentEditable(!0))})).catch((function(t){}))},removeTagsFromDOM:function(){this.getTagElms().forEach((function(t){return t.remove()}))},removeTagsFromValue:function(t){var e=this;(t=Array.isArray(t)?t:[t]).forEach((function(t){var n=Tt(t),i=e.getTagIdx(n);i>-1&&e.value.splice(i,1)}))},removeAllTags:function(t){var e=this;t=t||{},this.value=[],"mix"==this.settings.mode?this.DOM.input.innerHTML="":this.removeTagsFromDOM(),this.dropdown.refilter(),this.dropdown.position(),this.state.dropdown.visible&&setTimeout((function(){e.DOM.input.focus()})),"select"==this.settings.mode&&(this.input.set.call(this),this.settings.userInput&&this.setContentEditable(!0)),this.update(t)},postUpdate:function(){this.state.blockChangeEvent=!1;var t,e,n=this.settings,i=n.classNames,s="mix"==n.mode?n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value.trim():this.value.length+this.input.raw.call(this).length;this.toggleClass(i.hasMaxTags,this.value.length>=n.maxTags),this.toggleClass(i.hasNoTags,!this.value.length),this.toggleClass(i.empty,!s),"select"==n.mode&&this.toggleScopeValidation(null===(e=this.value)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.__isValid)},setOriginalInputValue:function(t){var e=this.DOM.originalInput;this.settings.mixMode.integrated||(e.value=t,e.tagifyValue=e.value,this.setPersistedData(t,"value"))},update:function(t){clearTimeout(this.debouncedUpdateTimeout),this.debouncedUpdateTimeout=setTimeout(function(){var e=this.getInputValue();this.setOriginalInputValue(e),this.settings.onChangeAfterBlur&&(t||{}).withoutChangeEvent||this.state.blockChangeEvent||this.triggerChangeEvent(),this.postUpdate()}.bind(this),100),this.events.bindOriginaInputListener.call(this,100)},getInputValue:function(){var t=this.getCleanValue();return"mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):""},getCleanValue:function(t){return ot(t||this.value,this.dataProps)},getMixedTagsAsString:function(){var t="",e=this,n=this.settings,i=n.originalInputValueFormat||JSON.stringify,s=n.mixTagsInterpolator;return function n(a){a.childNodes.forEach((function(a){if(1==a.nodeType){var o=Tt(a);if("BR"==a.tagName&&(t+="\r\n"),o&&vt.call(e,a)){if(o.__removed)return;t+=s[0]+i(rt(o,e.dataProps))+s[1]}else a.getAttribute("style")||["B","I","U"].includes(a.tagName)?t+=a.textContent:"DIV"!=a.tagName&&"P"!=a.tagName||(t+="\r\n",n(a))}else t+=a.textContent}))}(this.DOM.input),t}},Jt.prototype.removeTag=Jt.prototype.removeTags;const Zt="radio-field-input",te="multi-select-field-input";class ee{#U;#W;#z;#K;#X;#J;#Q;#G;#Y;#Z;#tt;#et;#nt;#it;#st;#at;#ot;#rt=null;#lt;#dt;#ct;#ut;#ht;#gt=null;#pt=null;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g,p,f,m,v,y){this.#U=t,this.#Z=o,this.#W=r,this.#z=l,this.#K=d,this.#X=c,this.#nt=u,this.#it=h,this.#st=g,this.#at=y,this.#lt=e,this.#dt=n,this.#ct=i,this.#ut=s,this.#ht=a,this.#ot=this.#at.innerHTML,this.#Y=p,this.#J=f,this.#Q=m,this.#G=v,this.#et=!1,this.#tt=!1,this.isAsync()&&(this.clearOptionElements(),this.loadOptionsDataSourceValues().then((()=>{this.#st.style.display="none"}))),this.#W.addEventListener("input",(t=>{this.isAsync()?this.handleOptionsDataSource(t.target).then((()=>{this.filterItemsSearch(t)})):this.filterItemsSearch(t)})),this.#Y.addEventListener("click",(()=>{this.setFiltered(!1)})),this.#J.addEventListener("click",(()=>{this.isAsync()&&(this.#W.value="",this.clearOptionElements()),this.toggleVisibility()})),"radio-field-input"===this.#z&&this.#X.forEach((t=>{t.addEventListener("change",(()=>{this.scrollListToTop()}))}))}isAsync(){return null!==this.#lt&&void 0!==this.#lt}isEngaged(){return this.#et}isFiltered(){return this.#tt}setFiltered(t){this.#tt!==t&&(this.#tt=t,t?(this.#Y.style.removeProperty("display"),this.#at.style.removeProperty("display")):(this.#W.value="",this.#Y.style.display="none",this.#at.style.display="none",this.#nt.style.display="none",this.#ft()))}toggleVisibility(){this.isEngaged()?(this.#et=!1,this.#U.classList.remove("engaged"),this.setFiltered(!1),this.#J.setAttribute("aria-expanded","false"),this.#Q.style.removeProperty("display"),this.#G.style.display="none",this.#it.style.display="none"):(this.#et=!0,this.#U.classList.add("engaged"),this.#J.setAttribute("aria-expanded","true"),this.#Q.style.display="none",this.#G.style.removeProperty("display"),this.isAsync()&&this.#it.style.removeProperty("display"))}#mt(t){this.#U.ownerDocument.defaultView.clearTimeout(this.#rt),this.#rt=this.#U.ownerDocument.defaultView.setTimeout((()=>{this.#at.textContent="",this.#U.ownerDocument.defaultView.requestAnimationFrame((()=>{this.#at.textContent=t}))}),500)}#vt(t){const e=$(this.#ot,t);this.#mt(e)}loadOptionsDataSourceValues(){return new Promise(((t,e)=>{"string"==typeof this.#ht||this.#ht instanceof String||this.#ht instanceof Array?this.fetchDataSource(new Map([[this.#ct,this.#ht]])).then((n=>{n&&n instanceof Array?(n.forEach((t=>{this.#K.append(this.optionsDataSourceDataToElement(t,!0))})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),t()):e()})):t()})).catch((t=>{if(t instanceof Error)throw t}))}handleOptionsDataSource(t){return this.#pt instanceof AbortController&&this.#pt.abort(),this.#pt=new AbortController,void 0!==this.#gt&&(clearTimeout(this.#gt),this.#gt=void 0),new Promise(((e,n)=>{if(t.value.length{const i=t.value;return this.fetchDataSource(new Map([[this.#dt,i]]),this.#pt.signal).then((t=>{t&&t instanceof Array?(this.clearOptionElements(),t.forEach((t=>{const e=this.optionsDataSourceDataToElement(t);this.#K.querySelector(`[data-value='${e.dataset.value}'][data-display='${e.dataset.display}']`)||this.#K.append(e)})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),e(),this.#st.style.display="none"):n(new Error("Invalid data received from data source fetch"))}))}),200)})).catch((t=>{if(t instanceof Error)throw t}))}fetchDataSource(t,e=null){const n=new URL(this.#lt,document.location);t.forEach(((t,e)=>{t instanceof Array?t.forEach((t=>{n.searchParams.append(`${e}[]`,t)})):n.searchParams.set(e,t)}));const i={};return e instanceof AbortController&&(i.signal=e.signal),fetch(n,i).then((t=>t.json())).catch((()=>{}))}clearOptionElements(t=!1){Array.from(this.#K.children).forEach((e=>{if(t)this.#K.removeChild(e);else{const t=e.querySelector("input");t&&t.checked||this.#K.removeChild(e)}})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item")}optionsDataSourceDataToElement(t,e=!1){const n=Math.random().toString(16).slice(2),i=document.createElement("input");i.id=n,i.value=t.value;const s=document.createElement("label");let a;switch(s.htmlFor=n,this.#z){case Zt:a=document.createElement("div"),a.className="c-field-radio__item c-field--has-option-filter__item",i.type="radio",i.name=this.#U.dataset.ilUiInputName,s.innerText=t.display,a.append(i),a.append(s);break;case te:a=document.createElement("li"),a.className="c-field--has-option-filter__item",i.type="checkbox",i.name=`${this.#U.dataset.ilUiInputName}[]`;const e=document.createElement("span");e.className="c-field-multiselect__label-text",e.innerText=t.display,s.append(i),s.append(e),a.append(s);break;default:throw new Error(`Unsupported list type '${this.#z}' received`)}return i.checked=e,a.dataset.value=t.value,a.dataset.display=t.display,a.dataset.searchBy=t.searchBy,a}filterItemsSearch(t){const e=t.target.value.toLowerCase();this.setFiltered(!!e);let n=0,i=!1;this.#X.forEach((t=>{t.textContent.toLowerCase().includes(e)?(n+=1,i=!0,ne(t)):function(t){t.style.display="none"}(t)})),this.#vt(n.toString()),""!==e&&!1===i?this.#nt.style.removeProperty("display"):(""===e||i)&&(this.#nt.style.display="none")}#ft(){this.#X.forEach((t=>ne(t)))}scrollListToTop(){this.#Z.scrollTo({top:0,behavior:"smooth"})}}function ne(t){t.style.removeProperty("display")}class ie{#V=new Map;init(t,e,n,i,s,a){if(void 0===t)throw new TypeError("During init of an InputHasOptionFilter an undefined element was passed to the factory.");if(this.#V.has(t.id))throw new Error(`A InputHasOptionFilter with id '${t.id}' has already been initialized.`);const o=t,r=o.querySelector(".c-input--has-option-filter__field"),l=o.querySelector(".c-input--has-option-filter__search-input input"),d=o.getAttribute("data-il-ui-component"),c=o.querySelector(".c-field--has-option-filter__list"),u=c.querySelectorAll(".c-field--has-option-filter__item"),h=o.querySelector(".message-no-match"),g=o.querySelector(".message-async-start-search"),p=o.querySelector('.c-input--has-option-filter__synopsis [role="status"]'),f=o.querySelector(".c-input--has-option-filter__loader"),m=o.querySelector(".c-input--has-option-filter__clear-search"),v=o.querySelector(".c-input--has-option-filter__visibility-toggle"),y=v.querySelector(".text-expand"),w=v.querySelector(".text-collapse"),b=new ee(t,""===e?null:e,n,i,s,JSON.parse(a),r,l,d,c,u,h,g,f,m,v,y,w,p);return this.#V.set(t.id,b),b}get(t){return this.#V.has(t)?this.#V.get(t):null}}var se;e.UI=e.UI||{},e.UI.Input=e.UI.Input||{},(se=e.UI.Input).textarea=new o,se.mustacheVariables={init:(t,e)=>function(t,e){e.querySelectorAll(".c-input--has-mustache-variables__definitions > li > a").forEach((e=>{const n=function(t){const e=t.textContent.match(/^\s*\{\{([^}]+)\}\}\s*$/);return e?e[1].trim():null}(e);e.addEventListener("click",(()=>{t.insertCharactersAroundSelection(`{{${n}}}`,"")}))}))}(t,e)},se.markdown=new y,se.optionFilter=new ie,se.treeSelect=new Z(new tt(t),e.UI.menu.drilldown,{txt:t=>e.Language.txt(t)},n),se.tagInput=se.tag||{},se.tagInput.init=(t,e,n,i,s)=>Yt(Jt,t,e,n,i,s)}($,il,document); diff --git a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js index 04025aecde60..5286b6dec66a 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js +++ b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js @@ -122,6 +122,11 @@ export default class OptionFilter { */ #messageAsyncStartSearch; + /** + * @type {HTMLSpanElement} + */ + #loaderAnimation; + /** * @type {HTMLDivElement} */ @@ -187,6 +192,7 @@ export default class OptionFilter { * @param {NodeList} items * @param {HTMLDivElement} messageNoMatch * @param {HTMLDivElement} messageAsyncStartSearch + * @param {HTMLSpanElement} loaderAnimation * @param {HTMLButtonElement} clearFilterButton * @param {HTMLButtonElement} engageDisengageToggle * @param {HTMLSpanElement} toggleExpandText @@ -207,6 +213,7 @@ export default class OptionFilter { items, messageNoMatch, messageAsyncStartSearch, + loaderAnimation, clearFilterButton, engageDisengageToggle, toggleExpandText, @@ -222,6 +229,7 @@ export default class OptionFilter { this.#items = items; this.#messageNoMatch = messageNoMatch; this.#messageAsyncStartSearch = messageAsyncStartSearch; + this.#loaderAnimation = loaderAnimation; this.#resultCountDisplay = resultCountDisplay; /* Data source related */ @@ -246,7 +254,9 @@ export default class OptionFilter { if (this.isAsync()) { this.clearOptionElements(); - this.loadOptionsDataSourceValues(); + this.loadOptionsDataSourceValues().then(() => { + this.#loaderAnimation.style.display = 'none'; + }); } /* Event Listeners */ @@ -380,6 +390,8 @@ export default class OptionFilter { this.#items = this.#itemList.querySelectorAll('.c-field--has-option-filter__item'); resolve(); }); + } else { + resolve(); } }).catch((error) => { if (error instanceof Error) { @@ -410,6 +422,8 @@ export default class OptionFilter { return; } + this.#loaderAnimation.style.removeProperty('display'); + this.#messageAsyncStartSearch.style.display = 'none'; this.#optionsDataSourceTimeoutId = setTimeout( () => { @@ -440,6 +454,7 @@ export default class OptionFilter { this.#items = this.#itemList.querySelectorAll('.c-field--has-option-filter__item'); resolve(); + this.#loaderAnimation.style.display = 'none'; }); }, OPTIONS_SOURCE_TRIGGER_TIMEOUT, diff --git a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js index 658d48deaa62..40570f2cc622 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js +++ b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js @@ -56,6 +56,7 @@ export default class OptionFilterFactory { const messageNoMatch = inputFieldContext.querySelector('.message-no-match'); const messageAsyncStartSearch = inputFieldContext.querySelector('.message-async-start-search'); const resultCountDisplay = inputFieldContext.querySelector('.c-input--has-option-filter__synopsis [role="status"]'); + const loaderAnimation = inputFieldContext.querySelector('.c-input--has-option-filter__loader'); /* Buttons */ const clearFilterButton = inputFieldContext.querySelector('.c-input--has-option-filter__clear-search'); @@ -77,6 +78,7 @@ export default class OptionFilterFactory { items, messageNoMatch, messageAsyncStartSearch, + loaderAnimation, clearFilterButton, engageDisengageToggle, toggleExpandText, diff --git a/components/ILIAS/UI/src/Implementation/Component/Input/Field/Renderer.php b/components/ILIAS/UI/src/Implementation/Component/Input/Field/Renderer.php index b1e0adceb5ab..abc4494b4e67 100755 --- a/components/ILIAS/UI/src/Implementation/Component/Input/Field/Renderer.php +++ b/components/ILIAS/UI/src/Implementation/Component/Input/Field/Renderer.php @@ -1340,6 +1340,10 @@ protected function renderOptionFilter(string $input_html, F\HasOptionFilterInter )); $option_filter_template->setVariable('OPTIONS_SHOWN', $this->txt('ui_field_option_filter_options_shown')); + if (!$component->getOptionsDataSource()) { + $option_filter_template->touchBlock("not_async"); + } + $expand_icon = $default_renderer->render($this->getUIFactory()->symbol()->glyph()->expand()); $option_filter_template->setVariable('EXPAND_TEXT', $expand_icon . $this->txt('ui_field_option_filter_show_all_options')); diff --git a/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html b/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html index e575d17ca230..dc916ee88dc4 100644 --- a/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html +++ b/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html @@ -23,6 +23,7 @@
{NOTHING_SELECTED}
{INPUT} + style="display: none"> diff --git a/templates/default/delos.css b/templates/default/delos.css index cb7216b3c389..f175c5a2be31 100644 --- a/templates/default/delos.css +++ b/templates/default/delos.css @@ -8386,6 +8386,14 @@ ul.c-input--has-mustache-variables__definitions > li { list-style: none; } +.c-input--has-option-filter__loader { + background-image: url("../images/media/loader.svg"); + border-color: #b0b0b0; + background-repeat: no-repeat; + background-position: right center; + padding-right: 18px; +} + .c-input[data-il-ui-component=radio-field-input]:has(.c-input--has-option-filter__field) .c-input__field, .c-input[data-il-ui-component=multi-select-field-input]:has(.c-input--has-option-filter__field) .c-input__field { display: flex; From 174f4cd02ae3cf03c1d4f563ef1091c7b3b7c2d7 Mon Sep 17 00:00:00 2001 From: Marvin Beym Date: Fri, 27 Feb 2026 09:51:17 +0100 Subject: [PATCH 5/7] Use 'hidden' class instead of setting style --- .../UI/resources/js/Input/Field/dist/input.factory.min.js | 2 +- .../js/Input/Field/src/OptionFilter/OptionFilter.js | 8 ++++---- .../UI/src/templates/default/Input/tpl.option_filter.html | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js b/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js index a88944e6c2f5..7a290c460c3a 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js +++ b/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js @@ -38,4 +38,4 @@ This Software may not be rebranded and sold as a library under any other name other than "Tagify" (by owner) or as part of another library. - */var et="​";function nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n/g,">").replace(/"/g,""").replace(/`|'/g,"'"):t}function ut(t){var e=Object.prototype.toString.call(t).split(" ")[1].slice(0,-1);return t===Object(t)&&"Array"!=e&&"Function"!=e&&"RegExp"!=e&&"HTMLUnknownElement"!=e}function ht(t,e,n){var i,s;function a(t,e){for(var n in e)if(e.hasOwnProperty(n)){if(ut(e[n])){ut(t[n])?a(t[n],e[n]):t[n]=Object.assign({},e[n]);continue}if(Array.isArray(e[n])){t[n]=Object.assign([],e[n]);continue}t[n]=e[n]}}return i=t,(null!=(s=Object)&&"undefined"!=typeof Symbol&&s[Symbol.hasInstance]?s[Symbol.hasInstance](i):i instanceof s)||(t={}),a(t,e),n&&a(t,n),t}function gt(){var t=[],e={},n=!0,i=!1,s=void 0;try{for(var a,o=arguments[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var r=a.value,l=!0,d=!1,c=void 0;try{for(var u,h=r[Symbol.iterator]();!(l=(u=h.next()).done);l=!0){var g=u.value;ut(g)?e[g.value]||(t.push(g),e[g.value]=1):t.includes(g)||t.push(g)}}catch(t){d=!0,c=t}finally{try{l||null==h.return||h.return()}finally{if(d)throw c}}}}catch(t){i=!0,s=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw s}}return t}function pt(t){return String.prototype.normalize?"string"==typeof t?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):void 0:t}var ft=function(){return/(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function vt(t){var e;return wt.call(this,t)&&(null==t||null===(e=t.classList)||void 0===e?void 0:e.contains(this.settings.classNames.tag))}function yt(t){return wt.call(this,t)&&(null==t?void 0:t.closest(this.settings.classNames.tagSelector))}function wt(t){var e;return(null==t||null===(e=t.closest)||void 0===e?void 0:e.call(t,this.settings.classNames.namespaceSelector))===this.DOM.scope}function bt(t,e){var n=window.getSelection();return e=e||n.getRangeAt(0),"string"==typeof t&&(t=document.createTextNode(t)),e&&(e.deleteContents(),e.insertNode(t)),t}function Tt(t,e,n){return t?(e&&(t.__tagifyTagData=n?e:ht({},t.__tagifyTagData||{},e)),t.__tagifyTagData):(st.warn("tag element doesn't exist",{tagElm:t,data:e}),e)}function St(t){if(t&&t.parentNode){var e=t,n=window.getSelection(),i=n.getRangeAt(0);n.rangeCount&&(i.setStartAfter(e),i.collapse(!0),n.removeAllRanges(),n.addRange(i))}}function Et(t,e){t.forEach((function(t){if(Tt(t.previousSibling)||!t.previousSibling){var n=document.createTextNode("​");t.before(n),e&&St(n)}}))}var xt={delimiters:",",pattern:null,tagTextProp:"value",maxTags:1/0,callbacks:{},addTagOnBlur:!0,addTagOn:["blur","tab","enter"],onChangeAfterBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,userInput:!0,focusable:!0,keepInvalidTags:!1,createInvalidTags:!0,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,pasteAsTags:!0,editTags:{clicks:2,keepInvalid:!0},transformTag:function(){},trim:!0,a11y:{focusableTags:!1},mixMode:{insertAfterTag:" "},autoComplete:{enabled:!0,rightKey:!1,tabKey:!1},classNames:{namespace:"tagify",mixMode:"tagify--mix",selectMode:"tagify--select",input:"tagify__input",focus:"tagify--focus",tagNoAnimation:"tagify--noAnim",tagInvalid:"tagify--invalid",tagNotAllowed:"tagify--notAllowed",scopeLoading:"tagify--loading",hasMaxTags:"tagify--hasMaxTags",hasNoTags:"tagify--noTags",empty:"tagify--empty",inputInvalid:"tagify__input--invalid",dropdown:"tagify__dropdown",dropdownWrapper:"tagify__dropdown__wrapper",dropdownHeader:"tagify__dropdown__header",dropdownFooter:"tagify__dropdown__footer",dropdownItem:"tagify__dropdown__item",dropdownItemActive:"tagify__dropdown__item--active",dropdownItemHidden:"tagify__dropdown__item--hidden",dropdownItemSelected:"tagify__dropdown__item--selected",dropdownInital:"tagify__dropdown--initial",tag:"tagify__tag",tagText:"tagify__tag-text",tagX:"tagify__tag__removeBtn",tagLoading:"tagify__tag--loading",tagEditing:"tagify__tag--editable",tagFlash:"tagify__tag--flash",tagHide:"tagify__tag--hide"},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:["value","searchBy"],fuzzySearch:!0,caseSensitive:!1,accentedSearch:!0,includeSelectedTags:!1,escapeHTML:!0,highlightFirst:!0,closeOnSelect:!0,clearOnSelect:!0,position:"all",appendTarget:null},hooks:{beforeRemoveTag:function(){return Promise.resolve()},beforePaste:function(){return Promise.resolve()},suggestionClick:function(){return Promise.resolve()},beforeKeyDown:function(){return Promise.resolve()}}};function Ot(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],e=this.dropdown.events.callbacks,n=this.listeners.dropdown=this.listeners.dropdown||{position:this.dropdown.position.bind(this,null),onKeyDown:e.onKeyDown.bind(this),onMouseOver:e.onMouseOver.bind(this),onMouseLeave:e.onMouseLeave.bind(this),onClick:e.onClick.bind(this),onScroll:e.onScroll.bind(this)},i=t?"addEventListener":"removeEventListener";"manual"!=this.settings.dropdown.position&&(document[i]("scroll",n.position,!0),window[i]("resize",n.position),window[i]("keydown",n.onKeyDown)),this.DOM.dropdown[i]("mouseover",n.onMouseOver),this.DOM.dropdown[i]("mouseleave",n.onMouseLeave),this.DOM.dropdown[i]("mousedown",n.onClick),this.DOM.dropdown.content[i]("scroll",n.onScroll)},callbacks:{onKeyDown:function(t){var e=this;if(this.state.hasFocus&&!this.state.composing){var n=this.settings,i=n.dropdown.includeSelectedTags,s=this.DOM.dropdown.querySelector(n.classNames.dropdownItemActiveSelector),a=this.dropdown.getSuggestionDataByNode(s),o="mix"==n.mode,r="select"==n.mode;n.hooks.beforeKeyDown(t,{tagify:this}).then((function(l){switch(t.key){case"ArrowDown":case"ArrowUp":case"Down":case"Up":t.preventDefault();var d=e.dropdown.getAllSuggestionsRefs(),c="ArrowUp"==t.key||"Up"==t.key;s&&(s=e.dropdown.getNextOrPrevOption(s,!c)),s&&s.matches(n.classNames.dropdownItemSelector)||(s=d[c?d.length-1:0]),e.dropdown.highlightOption(s,!0);break;case"PageUp":case"PageDown":var u;t.preventDefault();var h=e.dropdown.getAllSuggestionsRefs(),g=Math.floor(e.DOM.dropdown.content.clientHeight/(null===(u=h[0])||void 0===u?void 0:u.offsetHeight))||1,p="PageUp"===t.key;if(s){var f=h.indexOf(s),m=p?Math.max(0,f-g):Math.min(h.length-1,f+g);s=h[m]}else s=h[0];e.dropdown.highlightOption(s,!0);break;case"Home":case"End":t.preventDefault();var v=e.dropdown.getAllSuggestionsRefs();s=v["Home"===t.key?0:v.length-1],e.dropdown.highlightOption(s,!0);break;case"Escape":case"Esc":e.dropdown.hide();break;case"ArrowRight":if(e.state.actions.ArrowLeft||n.autoComplete.rightKey)return;case"Tab":var y=!n.autoComplete.rightKey||!n.autoComplete.tabKey;if(!o&&!r&&s&&y&&!e.state.editing&&a){t.preventDefault();var w=e.dropdown.getMappedValue(a);return e.state.autoCompleteData=a,e.input.autocomplete.set.call(e,w),!1}return!0;case"Enter":t.preventDefault(),e.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),n.hooks.suggestionClick(t,{tagify:e,tagData:a,suggestionElm:s}).then((function(){if(s){var n=i?s:e.dropdown.getNextOrPrevOption(s,!c);e.dropdown.selectOption(s,t,(function(){if(n){var t=n.getAttribute("value");n=e.dropdown.getSuggestionNodeByValue(t),e.dropdown.highlightOption(n)}}))}else e.dropdown.hide(),o||e.addTags(e.state.inputText.trim(),!0)})).catch((function(t){return st.warn(t)}));break;case"Backspace":if(o||e.state.editing.scope)return;var b=e.input.raw.call(e);""!=b&&8203!=b.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0))}}))}},onMouseOver:function(t){var e=t.target.closest(this.settings.classNames.dropdownItemSelector);this.dropdown.highlightOption(e)},onMouseLeave:function(t){this.dropdown.highlightOption()},onClick:function(t){var e=this;if(0==t.button&&t.target!=this.DOM.dropdown&&t.target!=this.DOM.dropdown.content){var n=t.target.closest(this.settings.classNames.dropdownItemSelector),i=this.dropdown.getSuggestionDataByNode(n);this.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),this.settings.hooks.suggestionClick(t,{tagify:this,tagData:i,suggestionElm:n}).then((function(){n?e.dropdown.selectOption(n,t):e.dropdown.hide()})).catch((function(t){return st.warn(t)}))}},onScroll:function(t){var e=t.target,n=e.scrollTop/(e.scrollHeight-e.parentNode.clientHeight)*100;this.trigger("dropdown:scroll",{percentage:Math.round(n)})}}},refilter:function(t){t=t||this.state.dropdown.query||"",this.suggestedListItems=this.dropdown.filterListItems(t),this.dropdown.fill(),this.suggestedListItems.length||this.dropdown.hide(),this.trigger("dropdown:updated",this.DOM.dropdown)},getSuggestionDataByNode:function(t){for(var e,n=t&&t.getAttribute("value"),i=this.suggestedListItems.length;i--;){if(ut(e=this.suggestedListItems[i])&&e.value==n)return e;if(e==n)return{value:e}}},getSuggestionNodeByValue:function(t){return this.dropdown.getAllSuggestionsRefs().find((function(e){return e.getAttribute("value")===t}))},getNextOrPrevOption:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.dropdown.getAllSuggestionsRefs(),i=n.findIndex((function(e){return e===t}));return e?n[i+1]:n[i-1]},highlightOption:function(t,e){var n,i=this.settings.classNames.dropdownItemActive;if(this.state.ddItemElm&&(this.state.ddItemElm.classList.remove(i),this.state.ddItemElm.removeAttribute("aria-selected")),!t)return this.state.ddItemData=null,this.state.ddItemElm=null,void this.input.autocomplete.suggest.call(this);n=this.dropdown.getSuggestionDataByNode(t),this.state.ddItemData=n,this.state.ddItemElm=t,t.classList.add(i),t.setAttribute("aria-selected",!0),e&&(t.parentNode.scrollTop=t.clientHeight+t.offsetTop-t.parentNode.clientHeight),this.settings.autoComplete&&(this.input.autocomplete.suggest.call(this,n),this.dropdown.position())},selectOption:function(t,e,n){var i=this,s=this.settings,a=s.dropdown.includeSelectedTags,o=s.dropdown,r=o.clearOnSelect,l=o.closeOnSelect;if(!t)return this.addTags(this.state.inputText,!0),void(l&&this.dropdown.hide());e=e||{};var d=t.getAttribute("value"),c="noMatch"==d,u="mix"==s.mode,h=this.suggestedListItems.find((function(t){var e;return(null!==(e=t.value)&&void 0!==e?e:t)==d}));if(this.trigger("dropdown:select",{data:h,elm:t,event:e}),h||c){if(this.state.editing){var g=this.normalizeTags([h])[0];h=s.transformTag.call(this,g)||g,this.onEditTagDone(null,ht({__isValid:!0},h))}else this[u?"addMixTags":"addTags"]([h||this.input.raw.call(this)],r);(u||this.DOM.input.parentNode)&&(setTimeout((function(){i.DOM.input.focus(),i.toggleFocusClass(!0)})),l&&setTimeout(this.dropdown.hide.bind(this)),a?n&&n():(t.addEventListener("transitionend",(function(){i.dropdown.fillHeaderFooter(),setTimeout((function(){t.remove(),i.dropdown.refilter(),n&&n()}),100)}),{once:!0}),t.classList.add(this.settings.classNames.dropdownItemHidden)))}else l&&setTimeout(this.dropdown.hide.bind(this))},selectAll:function(t){this.suggestedListItems.length=0,this.dropdown.hide(),this.dropdown.filterListItems("");var e=this.dropdown.filterListItems("");return t||(e=this.state.dropdown.suggestions),this.addTags(e,!0),this},filterListItems:function(t,e){var n,i,s,a,o,r,l=function(){var t,l,d=void 0,c=void 0;t=p[w],i=(null!=(l=Object)&&"undefined"!=typeof Symbol&&l[Symbol.hasInstance]?l[Symbol.hasInstance](t):t instanceof l)?p[w]:{value:p[w]};var f,m=Object.keys(i).some((function(t){return y.includes(t)}))?y:["value"];u.fuzzySearch&&!e.exact?(a=m.reduce((function(t,e){return t+" "+(i[e]||"")}),"").toLowerCase().trim(),u.accentedSearch&&(a=pt(a),r=pt(r)),d=0==a.indexOf(r),c=a===r,f=a,s=r.toLowerCase().split(" ").every((function(t){return f.includes(t.toLowerCase())}))):(d=!0,s=m.some((function(t){var n=""+(i[t]||"");return u.accentedSearch&&(n=pt(n),r=pt(r)),u.caseSensitive||(n=n.toLowerCase()),c=n===r,e.exact?n===r:0==n.indexOf(r)}))),o=!u.includeSelectedTags&&n.isTagDuplicate(ut(i)?i.value:i),s&&!o&&(c&&d?g.push(i):"startsWith"==u.sortby&&d?h.unshift(i):h.push(i))},d=this,c=this.settings,u=c.dropdown,h=(e=e||{},[]),g=[],p=c.whitelist,f=u.maxItems>=0?u.maxItems:1/0,m=u.includeSelectedTags,v="function"==typeof u.sortby,y=u.searchKeys,w=0;if(!(t="select"==c.mode&&this.value.length&&this.value[0][c.tagTextProp]==t?"":t)||!y.length){h=m?p:p.filter((function(t){return!d.isTagDuplicate(ut(t)?t.value:t)}));var b=v?u.sortby(h,r):h.slice(0,f);return this.state.dropdown.suggestions=b,b}for(r=u.caseSensitive?""+t:(""+t).toLowerCase();w[\r\n ]+\<").split(/>\s+<").trim():""},fillHeaderFooter:function(){var t=this.dropdown.filterListItems(this.state.dropdown.query),e=this.parseTemplate("dropdownHeader",[t]),n=this.parseTemplate("dropdownFooter",[t]),i=this.dropdown.getHeaderRef(),s=this.dropdown.getFooterRef();e&&(null==i||i.parentNode.replaceChild(e,i)),n&&(null==s||s.parentNode.replaceChild(n,s))},position:function(t){var e=this.settings.dropdown,n=this.dropdown.getAppendTarget();if("manual"!=e.position&&n){var i,s,a,o,r,l,d,c,u,h,g=this.DOM.dropdown,p=e.RTL,f=n===document.body,m=n===this.DOM.scope,v=f?window.pageYOffset:n.scrollTop,y=document.fullscreenElement||document.webkitFullscreenElement||document.documentElement,w=y.clientHeight,b=Math.max(y.clientWidth||0,window.innerWidth||0),T=b>480?e.position:"all",S=this.DOM["input"==T?"input":"scope"];if(t=t||g.clientHeight,this.state.dropdown.visible){if("text"==T?(a=(i=function(){var t=document.getSelection();if(t.rangeCount){var e,n,i=t.getRangeAt(0),s=i.startContainer,a=i.startOffset;if(a>0)return(n=document.createRange()).setStart(s,a-1),n.setEnd(s,a),{left:(e=n.getBoundingClientRect()).right,top:e.top,bottom:e.bottom};if(s.getBoundingClientRect)return s.getBoundingClientRect()}return{left:-9999,top:-9999}}()).bottom,s=i.top,o=i.left,r="auto"):(l=function(t){var e=0,n=0;for(t=t.parentNode;t&&t!=y;)e+=t.offsetTop||0,n+=t.offsetLeft||0,t=t.parentNode;return{top:e,left:n}}(n),i=S.getBoundingClientRect(),s=m?-1:i.top-l.top,a=(m?i.height:i.bottom-l.top)-1,o=m?-1:i.left-l.left,r=i.width+"px"),!f){var E=function(){for(var t=0,n=e.appendTarget.parentNode;n;)t+=n.scrollTop||0,n=n.parentNode;return t}();s+=E,a+=E}var x;s=Math.floor(s),a=Math.ceil(a),c=b-o<120,u=((d=null!==(x=e.placeAbove)&&void 0!==x?x:w-i.bottom\n ').concat(this.settings.templates.input.call(this),"\n ").concat(et,"\n ")},input:function(){var t=this.settings,e=t.placeholder||et;return"')},tag:function(t,e){var n=e.settings;return'\n \n
\n ').concat(t[n.tagTextProp]||t.value,"\n
\n
")},dropdown:function(t){var e=t.dropdown,n="manual"==e.position;return'
\n
\n
')},dropdownContent:function(t){var e=this.settings.templates,n=this.state.dropdown.suggestions;return"\n ".concat(e.dropdownHeader.call(this,n),"\n ").concat(t,"\n ").concat(e.dropdownFooter.call(this,n),"\n ")},dropdownItem:function(t){return"
').concat(t.mappedValue||t.value,"
")},dropdownHeader:function(t){return"
')},dropdownFooter:function(t){var e=t.length-this.settings.dropdown.maxItems;return e>0?"
\n ').concat(e," more items. Refine your search.\n
"):""},dropdownItemNoMatch:null};function jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],n=this.settings,i=this.events.callbacks,s=e?"addEventListener":"removeEventListener";if(!this.state.mainEvents||!e){for(var a in this.state.mainEvents=e,e&&!this.listeners.main&&(this.events.bindGlobal.call(this),this.settings.isJQueryPlugin&&jQuery(this.DOM.originalInput).on("tagify.removeAllTags",this.removeAllTags.bind(this))),t=this.listeners.main=this.listeners.main||{keydown:["input",i.onKeydown.bind(this)],click:["scope",i.onClickScope.bind(this)],dblclick:"select"!=n.mode&&["scope",i.onDoubleClickScope.bind(this)],paste:["input",i.onPaste.bind(this)],drop:["input",i.onDrop.bind(this)],compositionstart:["input",i.onCompositionStart.bind(this)],compositionend:["input",i.onCompositionEnd.bind(this)]})t[a]&&this.DOM[t[a][0]][s](a,t[a][1]);var o=this.listeners.main.inputMutationObserver||new MutationObserver(i.onInputDOMChange.bind(this));o.disconnect(),"mix"==n.mode&&o.observe(this.DOM.input,{childList:!0}),this.events.bindOriginaInputListener.call(this)}},bindOriginaInputListener:function(t){var e=(t||0)+500;this.listeners.main&&(clearInterval(this.listeners.main.originalInputValueObserverInterval),this.listeners.main.originalInputValueObserverInterval=setInterval(this.events.callbacks.observeOriginalInputValue.bind(this),e))},bindGlobal:function(t){var e,n=this.events.callbacks,i=t?"removeEventListener":"addEventListener";if(this.listeners&&(t||!this.listeners.global)){this.listeners.global=this.listeners.global||[{type:this.isIE?"keydown":"input",target:this.DOM.input,cb:n[this.isIE?"onInputIE":"onInput"].bind(this)},{type:"keydown",target:window,cb:n.onWindowKeyDown.bind(this)},{type:"focusin",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"focusout",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"click",target:document,cb:n.onClickAnywhere.bind(this),useCapture:!0}];var s=!0,a=!1,o=void 0;try{for(var r,l=this.listeners.global[Symbol.iterator]();!(s=(r=l.next()).done);s=!0)(e=r.value).target[i](e.type,e.cb,!!e.useCapture)}catch(t){a=!0,o=t}finally{try{s||null==l.return||l.return()}finally{if(a)throw o}}}},unbindGlobal:function(){this.events.bindGlobal.call(this,!0)},callbacks:{onFocusBlur:function(t){var e,n,i=this.settings,s=yt.call(this,t.relatedTarget),a=vt.call(this,t.relatedTarget),o=t.target.classList.contains(i.classNames.tagX),r="focusin"==t.type,l="focusout"==t.type;o&&"mix"!=i.mode&&this.DOM.input.focus(),s&&r&&!a&&!o&&this.toggleFocusClass(this.state.hasFocus=+new Date);var d=t.target?this.trim(this.DOM.input.textContent):"",c=null===(n=this.value)||void 0===n||null===(e=n[0])||void 0===e?void 0:e[i.tagTextProp],u=i.dropdown.enabled>=0,h={relatedTarget:t.relatedTarget},g=this.state.actions.selectOption&&(u||!i.dropdown.closeOnSelect),p=this.state.actions.addNew&&u;if(l){if(t.relatedTarget===this.DOM.scope)return this.dropdown.hide(),void this.DOM.input.focus();this.postUpdate(),i.onChangeAfterBlur&&this.triggerChangeEvent()}if(!(g||p||o))if(this.state.hasFocus=!(!r&&!s)&&+new Date,this.toggleFocusClass(this.state.hasFocus),"mix"!=i.mode){if(r){if(!i.focusable)return;var f=0===i.dropdown.enabled&&!this.state.dropdown.visible,m=!a||"select"===i.mode,v=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector);return this.trigger("focus",h),void(f&&m&&(this.dropdown.show(this.value.length?"":void 0),this.setRangeAtStartEnd(!1,v)))}if(l){if(this.trigger("blur",h),this.loading(!1),"select"==i.mode){if(this.value.length){var y=this.getTagElms()[0];d=this.trim(y.textContent)}c===d&&(d="")}d&&!this.state.actions.selectOption&&i.addTagOnBlur&&i.addTagOn.includes("blur")&&this.addTags(d,!0)}s||(this.DOM.input.removeAttribute("style"),this.dropdown.hide())}else r?this.trigger("focus",h):l&&(this.trigger("blur",h),this.loading(!1),this.dropdown.hide(),this.state.dropdown.visible=void 0,this.setStateSelection())},onCompositionStart:function(t){this.state.composing=!0},onCompositionEnd:function(t){this.state.composing=!1},onWindowKeyDown:function(t){var e,n=this.settings,i=document.activeElement,s=yt.call(this,i)&&this.DOM.scope.contains(i),a=i===this.DOM.input,o=s&&i.hasAttribute("readonly"),r=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),l=this.state.dropdown.visible;if(("Tab"===t.key&&l||this.state.hasFocus||s&&!o)&&!a){e=i.nextElementSibling;var d=t.target.classList.contains(n.classNames.tagX);switch(t.key){case"Backspace":n.readonly||this.state.editing||(this.removeTags(i),(e||this.DOM.input).focus());break;case"Enter":if(d)return void this.removeTags(t.target.parentNode);n.a11y.focusableTags&&vt.call(this,i)&&setTimeout(this.editTag.bind(this),0,i);break;case"ArrowDown":this.state.dropdown.visible||"mix"==n.mode||this.dropdown.show();break;case"Tab":null==r||r.focus()}}},onKeydown:function(t){var e=this,n=this.settings;if(!this.state.composing&&n.userInput){"select"==n.mode&&n.enforceWhitelist&&this.value.length&&"Tab"!=t.key&&t.preventDefault();var i=this.trim(t.target.textContent);this.trigger("keydown",{event:t}),n.hooks.beforeKeyDown(t,{tagify:this}).then((function(s){if("mix"==n.mode){switch(t.key){case"Left":case"ArrowLeft":e.state.actions.ArrowLeft=!0;break;case"Delete":case"Backspace":if(e.state.editing)return;var a=document.getSelection(),o="Delete"==t.key&&a.anchorOffset==(a.anchorNode.length||0),r=a.anchorNode.previousSibling,l=1==a.anchorNode.nodeType||!a.anchorOffset&&r&&1==r.nodeType&&a.anchorNode.previousSibling;!function(t){var e=document.createElement("div");t.replace(/\&#?[0-9a-z]+;/gi,(function(t){return e.innerHTML=t,e.innerText}))}(e.DOM.input.innerHTML);var d,c,u,h=e.getTagElms(),g=1===a.anchorNode.length&&a.anchorNode.nodeValue==String.fromCharCode(8203);if("edit"==n.backspace&&l)return d=1==a.anchorNode.nodeType?null:a.anchorNode.previousElementSibling,setTimeout(e.editTag.bind(e),0,d),void t.preventDefault();if(ft()&&Ht(l,Element))return u=dt(l),l.hasAttribute("readonly")||l.remove(),e.DOM.input.focus(),void setTimeout((function(){St(u),e.DOM.input.click()}));if("BR"==a.anchorNode.nodeName)return;if((o||l)&&1==a.anchorNode.nodeType?c=0==a.anchorOffset?o?h[0]:null:h[Math.min(h.length,a.anchorOffset)-1]:o?c=a.anchorNode.nextElementSibling:Ht(l,Element)&&(c=l),3==a.anchorNode.nodeType&&!a.anchorNode.nodeValue&&a.anchorNode.previousElementSibling&&t.preventDefault(),(l||o)&&!n.backspace)return void t.preventDefault();if("Range"!=a.type&&!a.anchorOffset&&a.anchorNode==e.DOM.input&&"Delete"!=t.key)return void t.preventDefault();if("Range"!=a.type&&c&&c.hasAttribute("readonly"))return void St(dt(c));"Delete"==t.key&&g&&Tt(a.anchorNode.nextSibling)&&e.removeTags(a.anchorNode.nextSibling)}return!0}var p="manual"==n.dropdown.position;switch(t.key){case"Backspace":"select"==n.mode&&n.enforceWhitelist&&e.value.length?e.removeTags():e.state.dropdown.visible&&"manual"!=n.dropdown.position||""!=t.target.textContent&&8203!=i.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0));break;case"Esc":case"Escape":if(e.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":e.state.dropdown.visible||e.dropdown.show();break;case"ArrowRight":var f=e.state.inputSuggestion||e.state.ddItemData;if(f&&n.autoComplete.rightKey)return void e.addTags([f],!0);break;case"Tab":return!0;case"Enter":if(e.state.dropdown.visible&&!p)return;t.preventDefault();var m=e.state.autoCompleteData||i;setTimeout((function(){e.state.dropdown.visible&&!p||e.state.actions.selectOption||!n.addTagOn.includes(t.key.toLowerCase())||(e.addTags([m],!0),e.state.autoCompleteData=null)}))}})).catch((function(t){return t}))}},onInput:function(t){this.postUpdate();var e=this.settings;if("mix"==e.mode)return this.events.callbacks.onMixTagsInput.call(this,t);var n=this.input.normalize.call(this,void 0,{trim:!1}),i=n.length>=e.dropdown.enabled,s={value:n,inputElm:this.DOM.input},a=this.validateTag({value:n});"select"==e.mode&&this.toggleScopeValidation(a),s.isValid=a,this.state.inputText!=n&&(this.input.set.call(this,n,!1),-1!=n.search(e.delimiters)?this.addTags(n)&&this.input.set.call(this):e.dropdown.enabled>=0&&this.dropdown[i?"show":"hide"](n),this.trigger("input",s))},onMixTagsInput:function(t){var e,n,i,s,a,o,r,l,d=this,c=this.settings,u=this.value.length,h=this.getTagElms(),g=document.createDocumentFragment(),p=window.getSelection().getRangeAt(0),f=[].map.call(h,(function(t){return Tt(t).value}));if("deleteContentBackward"==t.inputType&&ft()&&this.events.callbacks.onKeydown.call(this,{target:t.target,key:"Backspace"}),Et(this.getTagElms()),this.value.slice().forEach((function(t){t.readonly&&!f.includes(t.value)&&g.appendChild(d.createTagElem(t))})),g.childNodes.length&&(p.insertNode(g),this.setRangeAtStartEnd(!1,g.lastChild)),h.length!=u)return this.value=[].map.call(this.getTagElms(),(function(t){return Tt(t)})),void this.update({withoutChangeEvent:!0});if(this.hasMaxTags())return!0;if(window.getSelection&&(o=window.getSelection()).rangeCount>0&&3==o.anchorNode.nodeType){if((p=o.getRangeAt(0).cloneRange()).collapse(!0),p.setStart(o.focusNode,0),i=(e=p.toString().slice(0,p.endOffset)).split(c.pattern).length-1,(n=e.match(c.pattern))&&(s=e.slice(e.lastIndexOf(n[n.length-1]))),s){if(this.state.actions.ArrowLeft=!1,this.state.tag={prefix:s.match(c.pattern)[0],value:s.replace(c.pattern,"")},this.state.tag.baseOffset=o.baseOffset-this.state.tag.value.length,l=this.state.tag.value.match(c.delimiters))return this.state.tag.value=this.state.tag.value.replace(c.delimiters,""),this.state.tag.delimiters=l[0],this.addTags(this.state.tag.value,c.dropdown.clearOnSelect),void this.dropdown.hide();a=this.state.tag.value.length>=c.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||i500||!e.focusable)?this.state.dropdown.visible?this.dropdown.hide():0===e.dropdown.enabled&&"mix"!=e.mode&&this.dropdown.show(this.value.length?"":void 0):"select"!=e.mode||0!==e.dropdown.enabled||this.state.dropdown.visible||(this.events.callbacks.onDoubleClickScope.call(this,function(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n.push.apply(n,i)}return n}(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t}(function(t){for(var e=1;e=this.settings.dropdown.enabled&&(this.state.editing&&(this.state.editing.value=o),this.dropdown.show(o)),this.trigger("edit:input",{tag:i,index:s,data:ht({},this.value[s],{newValue:o}),event:e})},onEditTagPaste:function(t,e){var n=(e.clipboardData||window.clipboardData).getData("Text");e.preventDefault();var i=bt(n);this.setRangeAtStartEnd(!1,i)},onEditTagClick:function(t,e){this.events.callbacks.onClickScope.call(this,e)},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t,e){var n=vt.call(this,e.relatedTarget);if("select"==this.settings.mode&&n&&e.relatedTarget.contains(e.target))this.dropdown.hide();else if(this.state.editing&&(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(document.activeElement)||this.trigger("blur",{}),this.DOM.scope.contains(t))){var i,s,a,o=this.settings,r=t.closest("."+o.classNames.tag),l=Tt(r),d=this.input.normalize.call(this,t),c=(qt(i={},o.tagTextProp,d),qt(i,"__tagId",l.__tagId),i),u=l.__originalData,h=this.editTagChangeDetected(ht(l,c)),g=this.validateTag(c);if(d)if(h){var p;if(s=this.hasMaxTags(),a=ht({},u,(qt(p={},o.tagTextProp,this.trim(d)),qt(p,"__isValid",g),p)),o.transformTag.call(this,a,u),!0!==(g=(!s||!0===u.__isValid)&&this.validateTag(a))){if(this.trigger("invalid",{data:a,tag:r,message:g}),o.editTags.keepInvalid)return;o.keepInvalidTags?a.__isValid=g:a=u}else o.keepInvalidTags&&(delete a.title,delete a["aria-invalid"],delete a.class);this.onEditTagDone(r,a)}else this.onEditTagDone(r,u);else this.onEditTagDone(r)}},onEditTagkeydown:function(t,e){if(!this.state.composing)switch(this.trigger("edit:keydown",{event:t}),t.key){case"Esc":case"Escape":this.state.editing=!1,e.__tagifyTagData.__originalData.value?e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML,e):e.remove();break;case"Enter":case"Tab":t.preventDefault(),setTimeout((function(){return t.target.blur()}),0)}},onDoubleClickScope:function(t){var e=t.target.closest("."+this.settings.classNames.tag);if(e){var n,i,s=Tt(e),a=this.settings;!1!==(null==s?void 0:s.editable)&&(n=e.classList.contains(this.settings.classNames.tagEditing),i=e.hasAttribute("readonly"),a.readonly||n||i||!this.settings.editTags||!a.userInput||(this.events.callbacks.onEditTagFocus.call(this,e),this.editTag(e)),this.toggleFocusClass(!0),"select"!=a.mode&&this.trigger("dblclick",{tag:e,index:this.getNodeIndex(e),data:Tt(e)}))}},onInputDOMChange:function(t){var e=this;t.forEach((function(t){t.addedNodes.forEach((function(t){if("

"==t.outerHTML)t.replaceWith(document.createElement("br"));else if(1==t.nodeType&&t.querySelector(e.settings.classNames.tagSelector)){var n,i=document.createTextNode("");3==t.childNodes[0].nodeType&&"BR"!=t.previousSibling.nodeName&&(i=document.createTextNode("\n")),(n=t).replaceWith.apply(n,Rt([i].concat(Rt(Rt(t.childNodes).slice(0,-1))))),St(i)}else if(vt.call(e,t)){var s;if(3!=(null===(s=t.previousSibling)||void 0===s?void 0:s.nodeType)||t.previousSibling.textContent||t.previousSibling.remove(),t.previousSibling&&"BR"==t.previousSibling.nodeName){t.previousSibling.replaceWith("\n​");for(var a=t.nextSibling,o="";a;)o+=a.textContent,a=a.nextSibling;o.trim()&&St(t.previousSibling)}else t.previousSibling&&!Tt(t.previousSibling)||t.before("​")}})),t.removedNodes.forEach((function(t){t&&"BR"==t.nodeName&&vt.call(e,n)&&(e.removeTags(n),e.fixFirefoxLastTagNoCaret())}))}));var n=this.DOM.input.lastChild;n&&""==n.nodeValue&&n.remove(),n&&"BR"==n.nodeName||this.DOM.input.appendChild(document.createElement("br"))}}};function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.map((t=>t.value)),dropdown:{enabled:e.dropdownSuggestionsStartAfter,maxItems:e.dropdownMaxItems,closeOnSelect:e.dropdownCloseOnSelect,highlightFirst:e.highlight},transformTag(t){t.display||(t.display=t.value,t.value=encodeURIComponent(t.value)),t.display=t.display.replace(//g,">")},templates:{wrapper(t,e){return`
\n ${this.settings.templates.input.call(this)}\n ​\n
`},tag:t=>`
\n \n
\n ${t.display}\n
\n
`,dropdownItem:t=>`
\n ${t.display}\n
`}}}(e.id,n));o.addTags(i),void 0!==s&&o.on("input",(t=>{!function(t,e,n,i,s,a){Qt instanceof AbortController&&Qt.abort(),Qt=new AbortController,t.whitelist=null,void 0!==Gt&&(t.DOM.scope.ownerDocument.defaultView.clearTimeout(Gt),Gt=void 0),s.detail.value.length{const e=s.detail.value;n.writeParameter(i,e),t.loading(!0),fetch(n.getUrl().toString(),{signal:Qt.signal}).then((t=>t.json())).catch((()=>{})).then((n=>{t.whitelist=n,t.loading(!1).dropdown.show(e)}))}),a))}(o,n.suggestionStarts,s,a,t,n.autocompleteTriggerTimeout)}))}Jt.prototype={_dropdown:Lt,placeCaretAfterNode:St,getSetTagData:Tt,helpers:{sameStr:at,removeCollectionProp:ot,omit:rt,isObject:ut,parseHTML:lt,escapeHTML:ct,extend:ht,concatWithoutDups:gt,getUID:mt,isNodeTag:vt},customEventsList:["change","add","remove","invalid","input","paste","click","keydown","focus","blur","edit:input","edit:beforeUpdate","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select","dropdown:updated","dropdown:noMatch","dropdown:scroll"],dataProps:["__isValid","__removed","__originalData","__originalHTML","__tagId"],trim:function(t){return this.settings.trim&&t&&"string"==typeof t?t.trim():t},parseHTML:lt,templates:Bt,parseTemplate:function(t,e){return lt((t=this.settings.templates[t]||t).apply(this,e))},set whitelist(t){var e=t&&Array.isArray(t);this.settings.whitelist=e?t:[],this.setPersistedData(e?t:[],"whitelist")},get whitelist(){return this.settings.whitelist},set userInput(t){this.settings.userInput=!!t,this.setContentEditable(!!t)},get userInput(){return this.settings.userInput},generateClassSelectors:function(t){var e=function(e){var n=e;Object.defineProperty(t,n+"Selector",{get:function(){return"."+this[n].split(" ")[0]}})};for(var n in t)e(n)},applySettings:function(t,e){var n,i;xt.templates=this.templates;var s=ht({},xt,"mix"==e.mode?{dropdown:{position:"text"}}:{}),a=this.settings=ht({},s,e);if(a.disabled=t.hasAttribute("disabled"),a.readonly=a.readonly||t.hasAttribute("readonly"),a.placeholder=ct(t.getAttribute("placeholder")||a.placeholder||""),a.required=t.hasAttribute("required"),this.generateClassSelectors(a.classNames),this.isIE&&(a.autoComplete=!1),["whitelist","blacklist"].forEach((function(e){var n=t.getAttribute("data-"+e);n&&zt(n=n.split(a.delimiters),Array)&&(a[e]=n)})),"autoComplete"in e&&!ut(e.autoComplete)&&(a.autoComplete=xt.autoComplete,a.autoComplete.enabled=e.autoComplete),"mix"==a.mode&&(a.pattern=a.pattern||/@/,a.autoComplete.rightKey=!0,a.delimiters=e.delimiters||null,a.tagTextProp&&!a.dropdown.searchKeys.includes(a.tagTextProp)&&a.dropdown.searchKeys.push(a.tagTextProp)),t.pattern)try{a.pattern=new RegExp(t.pattern)}catch(t){}if(a.delimiters){a._delimiters=a.delimiters;try{a.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}}a.disabled&&(a.userInput=!1),this.TEXTS=Kt({},Pt,a.texts||{}),"select"==a.mode&&(a.dropdown.includeSelectedTags=!0),("select"!=a.mode||(null===(n=e.dropdown)||void 0===n?void 0:n.enabled))&&a.userInput||(a.dropdown.enabled=0),a.dropdown.appendTarget=(null===(i=e.dropdown)||void 0===i?void 0:i.appendTarget)||document.body,void 0===a.dropdown.includeSelectedTags&&(a.dropdown.includeSelectedTags=a.duplicates);var o=this.getPersistedData("whitelist");Array.isArray(o)&&(this.whitelist=Array.isArray(a.whitelist)?gt(a.whitelist,o):o)},getAttributes:function(t){var e,n=this.getCustomAttributes(t),i="";for(e in n)i+=" "+e+(void 0!==t[e]?'="'.concat(n[e],'"'):"");return i},getCustomAttributes:function(t){if(!ut(t))return"";var e,n={};for(e in t)"__"!=e.slice(0,2)&&"class"!=e&&t.hasOwnProperty(e)&&void 0!==t[e]&&(n[e]=ct(t[e]));return n},setStateSelection:function(){var t=window.getSelection(),e={anchorOffset:t.anchorOffset,anchorNode:t.anchorNode,range:t.getRangeAt&&t.rangeCount&&t.getRangeAt(0)};return this.state.selection=e,e},getCSSVars:function(){var t,e,n=getComputedStyle(this.DOM.scope,null);this.CSSVars={tagHideTransition:(t=function(t){if(!t)return{};var e=(t=t.trim().split(" ")[0]).split(/\d+/g).filter((function(t){return t})).pop().trim();return{value:+t.split(e).filter((function(t){return t}))[0].trim(),unit:e}}(("tag-hide-transition",n.getPropertyValue("--tag-hide-transition"))),e=t.value,"s"==t.unit?1e3*e:e)}},build:function(t){var e=this.DOM,n=t.closest("label");this.settings.mixMode.integrated?(e.originalInput=null,e.scope=t,e.input=t):(e.originalInput=t,e.originalInput_tabIndex=t.tabIndex,e.scope=this.parseTemplate("wrapper",[t,this.settings]),e.input=e.scope.querySelector(this.settings.classNames.inputSelector),t.parentNode.insertBefore(e.scope,t),t.tabIndex=-1),n&&n.setAttribute("for","")},destroy:function(){var t;this.events.unbindGlobal.call(this),null===(t=this.DOM.scope.parentNode)||void 0===t||t.removeChild(this.DOM.scope),this.DOM.originalInput.tabIndex=this.DOM.originalInput_tabIndex,delete this.DOM.originalInput.__tagify,this.dropdown.hide(!0),this.removeAllCustomListeners(),clearTimeout(this.dropdownHide__bindEventsTimeout),clearInterval(this.listeners.main.originalInputValueObserverInterval)},loadOriginalValues:function(t){var e,n=this.settings;if(this.state.blockChangeEvent=!0,void 0===t){var i=this.getPersistedData("value");t=i&&!this.DOM.originalInput.value?i:n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value}if(this.removeAllTags(),t)if("mix"==n.mode)this.parseMixTags(t),(e=this.DOM.input.lastChild)&&"BR"==e.tagName||this.DOM.input.insertAdjacentHTML("beforeend","
");else{try{zt(JSON.parse(t),Array)&&(t=JSON.parse(t))}catch(t){}this.addTags(t,!0).forEach((function(t){return t&&t.classList.add(n.classNames.tagNoAnimation)}))}else this.postUpdate();this.state.lastOriginalValueReported=n.mixMode.integrated?"":this.DOM.originalInput.value},cloneEvent:function(t){var e={};for(var n in t)"path"!=n&&(e[n]=t[n]);return e},loading:function(t){return this.state.isLoading=t,this.DOM.scope.classList[t?"add":"remove"](this.settings.classNames.scopeLoading),this},tagLoading:function(t,e){return t&&t.classList[e?"add":"remove"](this.settings.classNames.tagLoading),this},toggleClass:function(t,e){"string"==typeof t&&this.DOM.scope.classList.toggle(t,e)},toggleScopeValidation:function(t){var e=!0===t||void 0===t;!this.settings.required&&t&&t===this.TEXTS.empty&&(e=!0),this.toggleClass(this.settings.classNames.tagInvalid,!e),this.DOM.scope.title=e?"":t},toggleFocusClass:function(t){this.toggleClass(this.settings.classNames.focus,!!t)},setPlaceholder:function(t){var e=this;["data","aria"].forEach((function(n){return e.DOM.input.setAttribute("".concat(n,"-placeholder"),t)}))},triggerChangeEvent:function(){if(!this.settings.mixMode.integrated){var t=this.DOM.originalInput,e=this.state.lastOriginalValueReported!==t.value,n=new CustomEvent("change",{bubbles:!0});e&&(this.state.lastOriginalValueReported=t.value,n.simulated=!0,t._valueTracker&&t._valueTracker.setValue(Math.random()),t.dispatchEvent(n),this.trigger("change",this.state.lastOriginalValueReported),t.value=this.state.lastOriginalValueReported)}},events:$t,fixFirefoxLastTagNoCaret:function(){},setRangeAtStartEnd:function(t,e){if(e){t="number"==typeof t?t:!!t,e=e.lastChild||e;var n=document.getSelection();if(zt(n.focusNode,Element)&&!this.DOM.input.contains(n.focusNode))return!0;try{n.rangeCount>=1&&["Start","End"].forEach((function(i){return n.getRangeAt(0)["set"+i](e,t||e.length)}))}catch(t){console.warn(t)}}},insertAfterTag:function(t,e){if(e=e||this.settings.mixMode.insertAfterTag,t&&t.parentNode&&e)return e="string"==typeof e?document.createTextNode(e):e,t.parentNode.insertBefore(e,t.nextSibling),e},editTagChangeDetected:function(t){var e=t.__originalData;for(var n in e)if(!this.dataProps.includes(n)&&t[n]!=e[n])return!0;return!1},getTagTextNode:function(t){return t.querySelector(this.settings.classNames.tagTextSelector)},setTagTextNode:function(t,e){this.getTagTextNode(t).innerHTML=ct(e)},editTag:function(t,e){var n=this;t=t||this.getLastTag(),e=e||{};var i=this.settings,s=this.getTagTextNode(t),a=this.getNodeIndex(t),o=Tt(t),r=this.events.callbacks,l=!0,d="select"==i.mode;if(!d&&this.dropdown.hide(),s){if(!zt(o,Object)||!("editable"in o)||o.editable)return o=Tt(t,{__originalData:ht({},o),__originalHTML:t.cloneNode(!0)}),Tt(o.__originalHTML,o.__originalData),s.setAttribute("contenteditable",!0),t.classList.add(i.classNames.tagEditing),this.events.callbacks.onEditTagFocus.call(this,t),s.addEventListener("click",r.onEditTagClick.bind(this,t)),s.addEventListener("blur",r.onEditTagBlur.bind(this,this.getTagTextNode(t))),s.addEventListener("input",r.onEditTagInput.bind(this,s)),s.addEventListener("paste",r.onEditTagPaste.bind(this,s)),s.addEventListener("keydown",(function(e){return r.onEditTagkeydown.call(n,e,t)})),s.addEventListener("compositionstart",r.onCompositionStart.bind(this)),s.addEventListener("compositionend",r.onCompositionEnd.bind(this)),e.skipValidation||(l=this.editTagToggleValidity(t)),s.originalIsValid=l,this.trigger("edit:start",{tag:t,index:a,data:o,isValid:l}),s.focus(),!d&&this.setRangeAtStartEnd(!1,s),0===i.dropdown.enabled&&!d&&this.dropdown.show(),this.state.hasFocus=!0,this}else st.warn("Cannot find element in Tag template: .",i.classNames.tagTextSelector)},editTagToggleValidity:function(t,e){var n;if(e=e||Tt(t))return(n=!("__isValid"in e)||!0===e.__isValid)||this.removeTagsFromValue(t),this.update(),t.classList.toggle(this.settings.classNames.tagNotAllowed,!n),e.__isValid=n,e.__isValid;st.warn("tag has no data: ",t,e)},onEditTagDone:function(t,e){t=t||this.state.editing.scope,e=e||{};var n,i,s=this.settings,a={tag:t,index:this.getNodeIndex(t),previousData:Tt(t),data:e};this.trigger("edit:beforeUpdate",a,{cloneData:!1}),this.state.editing=!1,delete e.__originalData,delete e.__originalHTML,t&&t.parentNode&&((void 0!==(i=e[s.tagTextProp])?null===(n=(i+="").trim)||void 0===n?void 0:n.call(i):s.tagTextProp in e?void 0:e.value)?(t=this.replaceTag(t,e),this.editTagToggleValidity(t,e),s.a11y.focusableTags?t.focus():"select"!=s.mode&&St(t)):this.removeTags(t)),this.trigger("edit:updated",a),s.dropdown.closeOnSelect&&this.dropdown.hide(),this.settings.keepInvalidTags&&this.reCheckInvalidTags()},replaceTag:function(t,e){e&&""!==e.value&&void 0!==e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&ht(e,this.getInvalidTagAttrs(e,e.__isValid));var n=this.createTagElem(e);return t.parentNode.replaceChild(n,t),this.updateValueByDOMTags(),n},updateValueByDOMTags:function(){var t=this;this.value.length=0;var e=this.settings.classNames,n=[e.tagNotAllowed.split(" ")[0],e.tagHide];[].forEach.call(this.getTagElms(),(function(e){Xt(e.classList).some((function(t){return n.includes(t)}))||t.value.push(Tt(e))})),this.update(),this.dropdown.refilter()},injectAtCaret:function(t,e){var n;if(e=e||(null===(n=this.state.selection)||void 0===n?void 0:n.range),"string"==typeof t&&(t=document.createTextNode(t)),!e&&t)return this.appendMixTags(t),this;var i=bt(t,e);return this.setRangeAtStartEnd(!1,i),this.updateValueByDOMTags(),this.update(),this},input:{set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.settings,i=n.dropdown.closeOnSelect;this.state.inputText=t,e&&(this.DOM.input.innerHTML=ct(""+t),t&&this.toggleClass(n.classNames.empty,!this.DOM.input.innerHTML)),!t&&i&&this.dropdown.hide.bind(this),this.input.autocomplete.suggest.call(this),this.input.validate.call(this)},raw:function(){return this.DOM.input.textContent},validate:function(){var t=!this.state.inputText||!0===this.validateTag({value:this.state.inputText});return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid,!t),t},normalize:function(t,e){var n=t||this.DOM.input,i=[];n.childNodes.forEach((function(t){return 3==t.nodeType&&i.push(t.nodeValue)})),i=i.join("\n");try{i=i.replace(/(?:\r\n|\r|\n)/g,this.settings.delimiters.source.charAt(0))}catch(t){}return i=i.replace(/\s/g," "),(null==e?void 0:e.trim)?this.trim(i):i},autocomplete:{suggest:function(t){if(this.settings.autoComplete.enabled){"object"!=typeof(t=t||{value:""})&&(t={value:t});var e=this.dropdown.getMappedValue(t);if("number"!=typeof e){var n=this.state.inputText.toLowerCase(),i=e.substr(0,this.state.inputText.length).toLowerCase(),s=e.substring(this.state.inputText.length);e&&this.state.inputText&&i==n?(this.DOM.input.setAttribute("data-suggest",s),this.state.inputSuggestion=t):(this.DOM.input.removeAttribute("data-suggest"),delete this.state.inputSuggestion)}}},set:function(t){var e=this.DOM.input.getAttribute("data-suggest"),n=t||(e?this.state.inputText+e:null);return!!n&&("mix"==this.settings.mode?this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix+n)):(this.input.set.call(this,n),this.setRangeAtStartEnd(!1,this.DOM.input)),this.input.autocomplete.suggest.call(this),this.dropdown.hide(),!0)}}},getTagIdx:function(t){return this.value.findIndex((function(e){return e.__tagId==(t||{}).__tagId}))},getNodeIndex:function(t){var e=0;if(t)for(;t=t.previousElementSibling;)e++;return e},getTagElms:function(){for(var t=arguments.length,e=new Array(t),n=0;n=this.settings.maxTags&&this.TEXTS.exceed},setReadonly:function(t,e){var n=this.settings;this.DOM.scope.contains(document.activeElement)&&document.activeElement.blur(),n[e||"readonly"]=t,this.DOM.scope[(t?"set":"remove")+"Attribute"](e||"readonly",!0),this.settings.userInput=!0,this.setContentEditable(!t)},setContentEditable:function(t){this.DOM.input.contentEditable=t,this.DOM.input.tabIndex=t?0:-1},setDisabled:function(t){this.setReadonly(t,"disabled")},normalizeTags:function(t){var e=this,n=this.settings,i=n.whitelist,s=n.delimiters,a=n.mode,o=n.tagTextProp,r=[],l=!!i&&zt(i[0],Object),d=Array.isArray(t),c=d&&t[0].value,u=function(t){return(t+"").split(s).reduce((function(t,n){var i,s=e.trim(n);return s&&t.push((Wt(i={},o,s),Wt(i,"value",s),i)),t}),[])};if("number"==typeof t&&(t=t.toString()),"string"==typeof t){if(!t.trim())return[];t=u(t)}else d&&(t=t.reduce((function(t,n){if(ut(n)){var i=ht({},n);o in i||(o="value"),i[o]=e.trim(i[o]),(i[o]||0===i[o])&&t.push(i)}else if(null!=n&&""!==n&&void 0!==n){var s;(s=t).push.apply(s,Xt(u(n)))}return t}),[]));return l&&!c&&(t.forEach((function(t){var n=r.map((function(t){return t.value})),i=e.dropdown.filterListItems.call(e,t[o],{exact:!0});e.settings.duplicates||(i=i.filter((function(t){return!n.includes(t.value)})));var s=i.length>1?e.getWhitelistItem(t[o],o,i):i[0];s&&zt(s,Object)?r.push(s):"mix"!=a&&(null==t.value&&(t.value=t[o]),r.push(t))})),r.length&&(t=r)),t},parseMixTags:function(t){var e=this,n=this.settings,i=n.mixTagsInterpolator,s=n.duplicates,a=n.transformTag,o=n.enforceWhitelist,r=n.maxTags,l=n.tagTextProp,d=[];t=t.split(i[0]).map((function(t,n){var c,u,h,g=t.split(i[1]),p=g[0],f=d.length==r;try{if(p==+p)throw Error;u=JSON.parse(p)}catch(t){u=e.normalizeTags(p)[0]||{value:p}}if(a.call(e,u),f||!(g.length>1)||o&&!e.isTagWhitelisted(u.value)||!s&&e.isTagDuplicate(u.value)){if(t)return n?i[0]+t:t}else u[c=u[l]?l:"value"]=e.trim(u[c]),h=e.createTagElem(u),d.push(u),h.classList.add(e.settings.classNames.tagNoAnimation),g[0]=h.outerHTML,e.value.push(u);return g.join("")})).join(""),this.DOM.input.innerHTML=t,this.DOM.input.appendChild(document.createTextNode("")),this.DOM.input.normalize();var c=this.getTagElms();return c.forEach((function(t,e){return Tt(t,d[e])})),this.update({withoutChangeEvent:!0}),Et(c,this.state.hasFocus),t},replaceTextWithNode:function(t,e){if(this.state.tag||e){e=e||this.state.tag.prefix+this.state.tag.value;var n,i,s=this.state.selection||window.getSelection(),a=s.anchorNode,o=this.state.tag.delimiters?this.state.tag.delimiters.length:0;return a.splitText(s.anchorOffset-o),-1==(n=a.nodeValue.lastIndexOf(e))||(i=a.splitText(n),t&&a.parentNode.replaceChild(t,i)),!0}},prepareNewTagNode:function(t,e){e=e||{};var n=this.settings,i=[],s={},a=Object.assign({},t,{value:t.value+""});if(t=Object.assign({},a),n.transformTag.call(this,t),t.__isValid=this.hasMaxTags()||this.validateTag(t),!0!==t.__isValid){if(e.skipInvalid)return;if(ht(s,this.getInvalidTagAttrs(t,t.__isValid),{__preInvalidData:a}),t.__isValid==this.TEXTS.duplicate&&this.flashTag(this.getTagElmByValue(t.value)),!n.createInvalidTags)return void i.push(t.value)}return"readonly"in t&&(t.readonly?s["aria-readonly"]=!0:delete t.readonly),{tagElm:this.createTagElem(t,s),tagData:t,aggregatedInvalidInput:i}},postProcessNewTagNode:function(t,e){var n=this,i=this.settings,s=e.__isValid;s&&!0===s?this.value.push(e):(this.trigger("invalid",{data:e,index:this.value.length,tag:t,message:s}),i.keepInvalidTags||setTimeout((function(){return n.removeTags(t,!0)}),1e3)),this.dropdown.position()},selectTag:function(t,e){var n=this;if(!this.settings.enforceWhitelist||this.isTagWhitelisted(e.value)){this.state.actions.selectOption&&setTimeout((function(){return n.setRangeAtStartEnd(!1,n.DOM.input)}));var i=this.getLastTag();return i?this.replaceTag(i,e):this.appendTag(t),this.value[0]=e,this.update(),this.trigger("add",{tag:t,data:e}),[t]}},addEmptyTag:function(t){var e=ht({value:""},t||{}),n=this.createTagElem(e);Tt(n,e),this.appendTag(n),this.editTag(n,{skipValidation:!0}),this.toggleFocusClass(!0)},addTags:function(t,e,n){var i=this,s=[],a=this.settings,o=[],r=document.createDocumentFragment(),l=[];if(!t||0==t.length)return s;switch(t=this.normalizeTags(t),a.mode){case"mix":return this.addMixTags(t);case"select":e=!1,this.removeAllTags()}return this.DOM.input.removeAttribute("style"),t.forEach((function(t){var e=i.prepareNewTagNode(t,{skipInvalid:n||a.skipInvalid});if(e){var d=e.tagElm;if(t=e.tagData,o=e.aggregatedInvalidInput,s.push(d),"select"==a.mode)return i.selectTag(d,t);r.appendChild(d),i.postProcessNewTagNode(d,t),l.push({tagElm:d,tagData:t})}})),this.appendTag(r),l.forEach((function(t){var e=t.tagElm,n=t.tagData;return i.trigger("add",{tag:e,index:i.getTagIdx(n),data:n})})),this.update(),t.length&&e&&(this.input.set.call(this,a.createInvalidTags?"":o.join(a._delimiters)),this.setRangeAtStartEnd(!1,this.DOM.input)),this.dropdown.refilter(),s},addMixTags:function(t){var e=this;if((t=this.normalizeTags(t))[0].prefix||this.state.tag)return this.prefixedTextToTag(t[0]);var n=document.createDocumentFragment();return t.forEach((function(t){var i=e.prepareNewTagNode(t);n.appendChild(i.tagElm),e.insertAfterTag(i.tagElm),e.postProcessNewTagNode(i.tagElm,i.tagData)})),this.appendMixTags(n),n.children},appendMixTags:function(t){var e=!!this.state.selection;e?this.injectAtCaret(t):(this.DOM.input.focus(),(e=this.setStateSelection()).range.setStart(this.DOM.input,e.range.endOffset),e.range.setEnd(this.DOM.input,e.range.endOffset),this.DOM.input.appendChild(t),this.updateValueByDOMTags(),this.update())},prefixedTextToTag:function(t){var e,n,i,s=this,a=this.settings,o=null===(e=this.state.tag)||void 0===e?void 0:e.delimiters;if(t.prefix=t.prefix||this.state.tag?this.state.tag.prefix:(a.pattern.source||a.pattern)[0],i=this.prepareNewTagNode(t),n=i.tagElm,this.replaceTextWithNode(n)||this.DOM.input.appendChild(n),setTimeout((function(){return n.classList.add(s.settings.classNames.tagNoAnimation)}),300),this.update(),!o){var r=this.insertAfterTag(n)||n;setTimeout(St,0,r)}return this.state.tag=null,this.postProcessNewTagNode(n,i.tagData),n},appendTag:function(t){var e=this.DOM,n=e.input;e.scope.insertBefore(t,n)},createTagElem:function(t,e){t.__tagId=mt();var n,i=ht({},t,Kt({value:ct(t.value+"")},e));return function(t){for(var e,n=document.createNodeIterator(t,NodeFilter.SHOW_TEXT,null,!1);e=n.nextNode();)e.textContent.trim()||e.parentNode.removeChild(e)}(n=this.parseTemplate("tag",[i,this])),Tt(n,t),n},reCheckInvalidTags:function(){var t=this,e=this.settings;this.getTagElms(e.classNames.tagNotAllowed).forEach((function(n,i){var s=Tt(n),a=t.hasMaxTags(),o=t.validateTag(s),r=!0===o&&!a;if("select"==e.mode&&t.toggleScopeValidation(o),r)return s=s.__preInvalidData?s.__preInvalidData:{value:s.value},t.replaceTag(n,s);n.title=a||o}))},removeTags:function(t,e,n){var i,s=this,a=this.settings;if(t=t&&zt(t,HTMLElement)?[t]:zt(t,Array)?t:t?[t]:[this.getLastTag()].filter((function(t){return t})),i=t.reduce((function(t,e){e&&"string"==typeof e&&(e=s.getTagElmByValue(e));var n=Tt(e);return e&&n&&!n.readonly&&t.push({node:e,idx:s.getTagIdx(n),data:Tt(e,{__removed:!0})}),t}),[]),n="number"==typeof n?n:this.CSSVars.tagHideTransition,"select"==a.mode&&(n=0,this.input.set.call(this)),1==i.length&&"select"!=a.mode&&i[0].node.classList.contains(a.classNames.tagNotAllowed)&&(e=!0),i.length)return a.hooks.beforeRemoveTag(i,{tagify:this}).then((function(){var t=function(t){t.node.parentNode&&(t.node.parentNode.removeChild(t.node),e?a.keepInvalidTags&&this.trigger("remove",{tag:t.node,index:t.idx}):(this.trigger("remove",{tag:t.node,index:t.idx,data:t.data}),this.dropdown.refilter(),this.dropdown.position(),this.DOM.input.normalize(),a.keepInvalidTags&&this.reCheckInvalidTags()))};n&&n>10&&1==i.length?function(e){e.node.style.width=parseFloat(window.getComputedStyle(e.node).width)+"px",document.body.clientTop,e.node.classList.add(a.classNames.tagHide),setTimeout(t.bind(this),n,e)}.call(s,i[0]):i.forEach(t.bind(s)),e||(s.removeTagsFromValue(i.map((function(t){return t.node}))),s.update(),"select"==a.mode&&a.userInput&&s.setContentEditable(!0))})).catch((function(t){}))},removeTagsFromDOM:function(){this.getTagElms().forEach((function(t){return t.remove()}))},removeTagsFromValue:function(t){var e=this;(t=Array.isArray(t)?t:[t]).forEach((function(t){var n=Tt(t),i=e.getTagIdx(n);i>-1&&e.value.splice(i,1)}))},removeAllTags:function(t){var e=this;t=t||{},this.value=[],"mix"==this.settings.mode?this.DOM.input.innerHTML="":this.removeTagsFromDOM(),this.dropdown.refilter(),this.dropdown.position(),this.state.dropdown.visible&&setTimeout((function(){e.DOM.input.focus()})),"select"==this.settings.mode&&(this.input.set.call(this),this.settings.userInput&&this.setContentEditable(!0)),this.update(t)},postUpdate:function(){this.state.blockChangeEvent=!1;var t,e,n=this.settings,i=n.classNames,s="mix"==n.mode?n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value.trim():this.value.length+this.input.raw.call(this).length;this.toggleClass(i.hasMaxTags,this.value.length>=n.maxTags),this.toggleClass(i.hasNoTags,!this.value.length),this.toggleClass(i.empty,!s),"select"==n.mode&&this.toggleScopeValidation(null===(e=this.value)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.__isValid)},setOriginalInputValue:function(t){var e=this.DOM.originalInput;this.settings.mixMode.integrated||(e.value=t,e.tagifyValue=e.value,this.setPersistedData(t,"value"))},update:function(t){clearTimeout(this.debouncedUpdateTimeout),this.debouncedUpdateTimeout=setTimeout(function(){var e=this.getInputValue();this.setOriginalInputValue(e),this.settings.onChangeAfterBlur&&(t||{}).withoutChangeEvent||this.state.blockChangeEvent||this.triggerChangeEvent(),this.postUpdate()}.bind(this),100),this.events.bindOriginaInputListener.call(this,100)},getInputValue:function(){var t=this.getCleanValue();return"mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):""},getCleanValue:function(t){return ot(t||this.value,this.dataProps)},getMixedTagsAsString:function(){var t="",e=this,n=this.settings,i=n.originalInputValueFormat||JSON.stringify,s=n.mixTagsInterpolator;return function n(a){a.childNodes.forEach((function(a){if(1==a.nodeType){var o=Tt(a);if("BR"==a.tagName&&(t+="\r\n"),o&&vt.call(e,a)){if(o.__removed)return;t+=s[0]+i(rt(o,e.dataProps))+s[1]}else a.getAttribute("style")||["B","I","U"].includes(a.tagName)?t+=a.textContent:"DIV"!=a.tagName&&"P"!=a.tagName||(t+="\r\n",n(a))}else t+=a.textContent}))}(this.DOM.input),t}},Jt.prototype.removeTag=Jt.prototype.removeTags;const Zt="radio-field-input",te="multi-select-field-input";class ee{#U;#W;#z;#K;#X;#J;#Q;#G;#Y;#Z;#tt;#et;#nt;#it;#st;#at;#ot;#rt=null;#lt;#dt;#ct;#ut;#ht;#gt=null;#pt=null;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g,p,f,m,v,y){this.#U=t,this.#Z=o,this.#W=r,this.#z=l,this.#K=d,this.#X=c,this.#nt=u,this.#it=h,this.#st=g,this.#at=y,this.#lt=e,this.#dt=n,this.#ct=i,this.#ut=s,this.#ht=a,this.#ot=this.#at.innerHTML,this.#Y=p,this.#J=f,this.#Q=m,this.#G=v,this.#et=!1,this.#tt=!1,this.isAsync()&&(this.clearOptionElements(),this.loadOptionsDataSourceValues().then((()=>{this.#st.style.display="none"}))),this.#W.addEventListener("input",(t=>{this.isAsync()?this.handleOptionsDataSource(t.target).then((()=>{this.filterItemsSearch(t)})):this.filterItemsSearch(t)})),this.#Y.addEventListener("click",(()=>{this.setFiltered(!1)})),this.#J.addEventListener("click",(()=>{this.isAsync()&&(this.#W.value="",this.clearOptionElements()),this.toggleVisibility()})),"radio-field-input"===this.#z&&this.#X.forEach((t=>{t.addEventListener("change",(()=>{this.scrollListToTop()}))}))}isAsync(){return null!==this.#lt&&void 0!==this.#lt}isEngaged(){return this.#et}isFiltered(){return this.#tt}setFiltered(t){this.#tt!==t&&(this.#tt=t,t?(this.#Y.style.removeProperty("display"),this.#at.style.removeProperty("display")):(this.#W.value="",this.#Y.style.display="none",this.#at.style.display="none",this.#nt.style.display="none",this.#ft()))}toggleVisibility(){this.isEngaged()?(this.#et=!1,this.#U.classList.remove("engaged"),this.setFiltered(!1),this.#J.setAttribute("aria-expanded","false"),this.#Q.style.removeProperty("display"),this.#G.style.display="none",this.#it.style.display="none"):(this.#et=!0,this.#U.classList.add("engaged"),this.#J.setAttribute("aria-expanded","true"),this.#Q.style.display="none",this.#G.style.removeProperty("display"),this.isAsync()&&this.#it.style.removeProperty("display"))}#mt(t){this.#U.ownerDocument.defaultView.clearTimeout(this.#rt),this.#rt=this.#U.ownerDocument.defaultView.setTimeout((()=>{this.#at.textContent="",this.#U.ownerDocument.defaultView.requestAnimationFrame((()=>{this.#at.textContent=t}))}),500)}#vt(t){const e=$(this.#ot,t);this.#mt(e)}loadOptionsDataSourceValues(){return new Promise(((t,e)=>{"string"==typeof this.#ht||this.#ht instanceof String||this.#ht instanceof Array?this.fetchDataSource(new Map([[this.#ct,this.#ht]])).then((n=>{n&&n instanceof Array?(n.forEach((t=>{this.#K.append(this.optionsDataSourceDataToElement(t,!0))})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),t()):e()})):t()})).catch((t=>{if(t instanceof Error)throw t}))}handleOptionsDataSource(t){return this.#pt instanceof AbortController&&this.#pt.abort(),this.#pt=new AbortController,void 0!==this.#gt&&(clearTimeout(this.#gt),this.#gt=void 0),new Promise(((e,n)=>{if(t.value.length{const i=t.value;return this.fetchDataSource(new Map([[this.#dt,i]]),this.#pt.signal).then((t=>{t&&t instanceof Array?(this.clearOptionElements(),t.forEach((t=>{const e=this.optionsDataSourceDataToElement(t);this.#K.querySelector(`[data-value='${e.dataset.value}'][data-display='${e.dataset.display}']`)||this.#K.append(e)})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),e(),this.#st.style.display="none"):n(new Error("Invalid data received from data source fetch"))}))}),200)})).catch((t=>{if(t instanceof Error)throw t}))}fetchDataSource(t,e=null){const n=new URL(this.#lt,document.location);t.forEach(((t,e)=>{t instanceof Array?t.forEach((t=>{n.searchParams.append(`${e}[]`,t)})):n.searchParams.set(e,t)}));const i={};return e instanceof AbortController&&(i.signal=e.signal),fetch(n,i).then((t=>t.json())).catch((()=>{}))}clearOptionElements(t=!1){Array.from(this.#K.children).forEach((e=>{if(t)this.#K.removeChild(e);else{const t=e.querySelector("input");t&&t.checked||this.#K.removeChild(e)}})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item")}optionsDataSourceDataToElement(t,e=!1){const n=Math.random().toString(16).slice(2),i=document.createElement("input");i.id=n,i.value=t.value;const s=document.createElement("label");let a;switch(s.htmlFor=n,this.#z){case Zt:a=document.createElement("div"),a.className="c-field-radio__item c-field--has-option-filter__item",i.type="radio",i.name=this.#U.dataset.ilUiInputName,s.innerText=t.display,a.append(i),a.append(s);break;case te:a=document.createElement("li"),a.className="c-field--has-option-filter__item",i.type="checkbox",i.name=`${this.#U.dataset.ilUiInputName}[]`;const e=document.createElement("span");e.className="c-field-multiselect__label-text",e.innerText=t.display,s.append(i),s.append(e),a.append(s);break;default:throw new Error(`Unsupported list type '${this.#z}' received`)}return i.checked=e,a.dataset.value=t.value,a.dataset.display=t.display,a.dataset.searchBy=t.searchBy,a}filterItemsSearch(t){const e=t.target.value.toLowerCase();this.setFiltered(!!e);let n=0,i=!1;this.#X.forEach((t=>{t.textContent.toLowerCase().includes(e)?(n+=1,i=!0,ne(t)):function(t){t.style.display="none"}(t)})),this.#vt(n.toString()),""!==e&&!1===i?this.#nt.style.removeProperty("display"):(""===e||i)&&(this.#nt.style.display="none")}#ft(){this.#X.forEach((t=>ne(t)))}scrollListToTop(){this.#Z.scrollTo({top:0,behavior:"smooth"})}}function ne(t){t.style.removeProperty("display")}class ie{#V=new Map;init(t,e,n,i,s,a){if(void 0===t)throw new TypeError("During init of an InputHasOptionFilter an undefined element was passed to the factory.");if(this.#V.has(t.id))throw new Error(`A InputHasOptionFilter with id '${t.id}' has already been initialized.`);const o=t,r=o.querySelector(".c-input--has-option-filter__field"),l=o.querySelector(".c-input--has-option-filter__search-input input"),d=o.getAttribute("data-il-ui-component"),c=o.querySelector(".c-field--has-option-filter__list"),u=c.querySelectorAll(".c-field--has-option-filter__item"),h=o.querySelector(".message-no-match"),g=o.querySelector(".message-async-start-search"),p=o.querySelector('.c-input--has-option-filter__synopsis [role="status"]'),f=o.querySelector(".c-input--has-option-filter__loader"),m=o.querySelector(".c-input--has-option-filter__clear-search"),v=o.querySelector(".c-input--has-option-filter__visibility-toggle"),y=v.querySelector(".text-expand"),w=v.querySelector(".text-collapse"),b=new ee(t,""===e?null:e,n,i,s,JSON.parse(a),r,l,d,c,u,h,g,f,m,v,y,w,p);return this.#V.set(t.id,b),b}get(t){return this.#V.has(t)?this.#V.get(t):null}}var se;e.UI=e.UI||{},e.UI.Input=e.UI.Input||{},(se=e.UI.Input).textarea=new o,se.mustacheVariables={init:(t,e)=>function(t,e){e.querySelectorAll(".c-input--has-mustache-variables__definitions > li > a").forEach((e=>{const n=function(t){const e=t.textContent.match(/^\s*\{\{([^}]+)\}\}\s*$/);return e?e[1].trim():null}(e);e.addEventListener("click",(()=>{t.insertCharactersAroundSelection(`{{${n}}}`,"")}))}))}(t,e)},se.markdown=new y,se.optionFilter=new ie,se.treeSelect=new Z(new tt(t),e.UI.menu.drilldown,{txt:t=>e.Language.txt(t)},n),se.tagInput=se.tag||{},se.tagInput.init=(t,e,n,i,s)=>Yt(Jt,t,e,n,i,s)}($,il,document); + */var et="​";function nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n/g,">").replace(/"/g,""").replace(/`|'/g,"'"):t}function ut(t){var e=Object.prototype.toString.call(t).split(" ")[1].slice(0,-1);return t===Object(t)&&"Array"!=e&&"Function"!=e&&"RegExp"!=e&&"HTMLUnknownElement"!=e}function ht(t,e,n){var i,s;function a(t,e){for(var n in e)if(e.hasOwnProperty(n)){if(ut(e[n])){ut(t[n])?a(t[n],e[n]):t[n]=Object.assign({},e[n]);continue}if(Array.isArray(e[n])){t[n]=Object.assign([],e[n]);continue}t[n]=e[n]}}return i=t,(null!=(s=Object)&&"undefined"!=typeof Symbol&&s[Symbol.hasInstance]?s[Symbol.hasInstance](i):i instanceof s)||(t={}),a(t,e),n&&a(t,n),t}function gt(){var t=[],e={},n=!0,i=!1,s=void 0;try{for(var a,o=arguments[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var r=a.value,l=!0,d=!1,c=void 0;try{for(var u,h=r[Symbol.iterator]();!(l=(u=h.next()).done);l=!0){var g=u.value;ut(g)?e[g.value]||(t.push(g),e[g.value]=1):t.includes(g)||t.push(g)}}catch(t){d=!0,c=t}finally{try{l||null==h.return||h.return()}finally{if(d)throw c}}}}catch(t){i=!0,s=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw s}}return t}function pt(t){return String.prototype.normalize?"string"==typeof t?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):void 0:t}var ft=function(){return/(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function vt(t){var e;return wt.call(this,t)&&(null==t||null===(e=t.classList)||void 0===e?void 0:e.contains(this.settings.classNames.tag))}function yt(t){return wt.call(this,t)&&(null==t?void 0:t.closest(this.settings.classNames.tagSelector))}function wt(t){var e;return(null==t||null===(e=t.closest)||void 0===e?void 0:e.call(t,this.settings.classNames.namespaceSelector))===this.DOM.scope}function bt(t,e){var n=window.getSelection();return e=e||n.getRangeAt(0),"string"==typeof t&&(t=document.createTextNode(t)),e&&(e.deleteContents(),e.insertNode(t)),t}function Tt(t,e,n){return t?(e&&(t.__tagifyTagData=n?e:ht({},t.__tagifyTagData||{},e)),t.__tagifyTagData):(st.warn("tag element doesn't exist",{tagElm:t,data:e}),e)}function St(t){if(t&&t.parentNode){var e=t,n=window.getSelection(),i=n.getRangeAt(0);n.rangeCount&&(i.setStartAfter(e),i.collapse(!0),n.removeAllRanges(),n.addRange(i))}}function Et(t,e){t.forEach((function(t){if(Tt(t.previousSibling)||!t.previousSibling){var n=document.createTextNode("​");t.before(n),e&&St(n)}}))}var xt={delimiters:",",pattern:null,tagTextProp:"value",maxTags:1/0,callbacks:{},addTagOnBlur:!0,addTagOn:["blur","tab","enter"],onChangeAfterBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,userInput:!0,focusable:!0,keepInvalidTags:!1,createInvalidTags:!0,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,pasteAsTags:!0,editTags:{clicks:2,keepInvalid:!0},transformTag:function(){},trim:!0,a11y:{focusableTags:!1},mixMode:{insertAfterTag:" "},autoComplete:{enabled:!0,rightKey:!1,tabKey:!1},classNames:{namespace:"tagify",mixMode:"tagify--mix",selectMode:"tagify--select",input:"tagify__input",focus:"tagify--focus",tagNoAnimation:"tagify--noAnim",tagInvalid:"tagify--invalid",tagNotAllowed:"tagify--notAllowed",scopeLoading:"tagify--loading",hasMaxTags:"tagify--hasMaxTags",hasNoTags:"tagify--noTags",empty:"tagify--empty",inputInvalid:"tagify__input--invalid",dropdown:"tagify__dropdown",dropdownWrapper:"tagify__dropdown__wrapper",dropdownHeader:"tagify__dropdown__header",dropdownFooter:"tagify__dropdown__footer",dropdownItem:"tagify__dropdown__item",dropdownItemActive:"tagify__dropdown__item--active",dropdownItemHidden:"tagify__dropdown__item--hidden",dropdownItemSelected:"tagify__dropdown__item--selected",dropdownInital:"tagify__dropdown--initial",tag:"tagify__tag",tagText:"tagify__tag-text",tagX:"tagify__tag__removeBtn",tagLoading:"tagify__tag--loading",tagEditing:"tagify__tag--editable",tagFlash:"tagify__tag--flash",tagHide:"tagify__tag--hide"},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:["value","searchBy"],fuzzySearch:!0,caseSensitive:!1,accentedSearch:!0,includeSelectedTags:!1,escapeHTML:!0,highlightFirst:!0,closeOnSelect:!0,clearOnSelect:!0,position:"all",appendTarget:null},hooks:{beforeRemoveTag:function(){return Promise.resolve()},beforePaste:function(){return Promise.resolve()},suggestionClick:function(){return Promise.resolve()},beforeKeyDown:function(){return Promise.resolve()}}};function Ot(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],e=this.dropdown.events.callbacks,n=this.listeners.dropdown=this.listeners.dropdown||{position:this.dropdown.position.bind(this,null),onKeyDown:e.onKeyDown.bind(this),onMouseOver:e.onMouseOver.bind(this),onMouseLeave:e.onMouseLeave.bind(this),onClick:e.onClick.bind(this),onScroll:e.onScroll.bind(this)},i=t?"addEventListener":"removeEventListener";"manual"!=this.settings.dropdown.position&&(document[i]("scroll",n.position,!0),window[i]("resize",n.position),window[i]("keydown",n.onKeyDown)),this.DOM.dropdown[i]("mouseover",n.onMouseOver),this.DOM.dropdown[i]("mouseleave",n.onMouseLeave),this.DOM.dropdown[i]("mousedown",n.onClick),this.DOM.dropdown.content[i]("scroll",n.onScroll)},callbacks:{onKeyDown:function(t){var e=this;if(this.state.hasFocus&&!this.state.composing){var n=this.settings,i=n.dropdown.includeSelectedTags,s=this.DOM.dropdown.querySelector(n.classNames.dropdownItemActiveSelector),a=this.dropdown.getSuggestionDataByNode(s),o="mix"==n.mode,r="select"==n.mode;n.hooks.beforeKeyDown(t,{tagify:this}).then((function(l){switch(t.key){case"ArrowDown":case"ArrowUp":case"Down":case"Up":t.preventDefault();var d=e.dropdown.getAllSuggestionsRefs(),c="ArrowUp"==t.key||"Up"==t.key;s&&(s=e.dropdown.getNextOrPrevOption(s,!c)),s&&s.matches(n.classNames.dropdownItemSelector)||(s=d[c?d.length-1:0]),e.dropdown.highlightOption(s,!0);break;case"PageUp":case"PageDown":var u;t.preventDefault();var h=e.dropdown.getAllSuggestionsRefs(),g=Math.floor(e.DOM.dropdown.content.clientHeight/(null===(u=h[0])||void 0===u?void 0:u.offsetHeight))||1,p="PageUp"===t.key;if(s){var f=h.indexOf(s),m=p?Math.max(0,f-g):Math.min(h.length-1,f+g);s=h[m]}else s=h[0];e.dropdown.highlightOption(s,!0);break;case"Home":case"End":t.preventDefault();var v=e.dropdown.getAllSuggestionsRefs();s=v["Home"===t.key?0:v.length-1],e.dropdown.highlightOption(s,!0);break;case"Escape":case"Esc":e.dropdown.hide();break;case"ArrowRight":if(e.state.actions.ArrowLeft||n.autoComplete.rightKey)return;case"Tab":var y=!n.autoComplete.rightKey||!n.autoComplete.tabKey;if(!o&&!r&&s&&y&&!e.state.editing&&a){t.preventDefault();var w=e.dropdown.getMappedValue(a);return e.state.autoCompleteData=a,e.input.autocomplete.set.call(e,w),!1}return!0;case"Enter":t.preventDefault(),e.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),n.hooks.suggestionClick(t,{tagify:e,tagData:a,suggestionElm:s}).then((function(){if(s){var n=i?s:e.dropdown.getNextOrPrevOption(s,!c);e.dropdown.selectOption(s,t,(function(){if(n){var t=n.getAttribute("value");n=e.dropdown.getSuggestionNodeByValue(t),e.dropdown.highlightOption(n)}}))}else e.dropdown.hide(),o||e.addTags(e.state.inputText.trim(),!0)})).catch((function(t){return st.warn(t)}));break;case"Backspace":if(o||e.state.editing.scope)return;var b=e.input.raw.call(e);""!=b&&8203!=b.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0))}}))}},onMouseOver:function(t){var e=t.target.closest(this.settings.classNames.dropdownItemSelector);this.dropdown.highlightOption(e)},onMouseLeave:function(t){this.dropdown.highlightOption()},onClick:function(t){var e=this;if(0==t.button&&t.target!=this.DOM.dropdown&&t.target!=this.DOM.dropdown.content){var n=t.target.closest(this.settings.classNames.dropdownItemSelector),i=this.dropdown.getSuggestionDataByNode(n);this.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),this.settings.hooks.suggestionClick(t,{tagify:this,tagData:i,suggestionElm:n}).then((function(){n?e.dropdown.selectOption(n,t):e.dropdown.hide()})).catch((function(t){return st.warn(t)}))}},onScroll:function(t){var e=t.target,n=e.scrollTop/(e.scrollHeight-e.parentNode.clientHeight)*100;this.trigger("dropdown:scroll",{percentage:Math.round(n)})}}},refilter:function(t){t=t||this.state.dropdown.query||"",this.suggestedListItems=this.dropdown.filterListItems(t),this.dropdown.fill(),this.suggestedListItems.length||this.dropdown.hide(),this.trigger("dropdown:updated",this.DOM.dropdown)},getSuggestionDataByNode:function(t){for(var e,n=t&&t.getAttribute("value"),i=this.suggestedListItems.length;i--;){if(ut(e=this.suggestedListItems[i])&&e.value==n)return e;if(e==n)return{value:e}}},getSuggestionNodeByValue:function(t){return this.dropdown.getAllSuggestionsRefs().find((function(e){return e.getAttribute("value")===t}))},getNextOrPrevOption:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.dropdown.getAllSuggestionsRefs(),i=n.findIndex((function(e){return e===t}));return e?n[i+1]:n[i-1]},highlightOption:function(t,e){var n,i=this.settings.classNames.dropdownItemActive;if(this.state.ddItemElm&&(this.state.ddItemElm.classList.remove(i),this.state.ddItemElm.removeAttribute("aria-selected")),!t)return this.state.ddItemData=null,this.state.ddItemElm=null,void this.input.autocomplete.suggest.call(this);n=this.dropdown.getSuggestionDataByNode(t),this.state.ddItemData=n,this.state.ddItemElm=t,t.classList.add(i),t.setAttribute("aria-selected",!0),e&&(t.parentNode.scrollTop=t.clientHeight+t.offsetTop-t.parentNode.clientHeight),this.settings.autoComplete&&(this.input.autocomplete.suggest.call(this,n),this.dropdown.position())},selectOption:function(t,e,n){var i=this,s=this.settings,a=s.dropdown.includeSelectedTags,o=s.dropdown,r=o.clearOnSelect,l=o.closeOnSelect;if(!t)return this.addTags(this.state.inputText,!0),void(l&&this.dropdown.hide());e=e||{};var d=t.getAttribute("value"),c="noMatch"==d,u="mix"==s.mode,h=this.suggestedListItems.find((function(t){var e;return(null!==(e=t.value)&&void 0!==e?e:t)==d}));if(this.trigger("dropdown:select",{data:h,elm:t,event:e}),h||c){if(this.state.editing){var g=this.normalizeTags([h])[0];h=s.transformTag.call(this,g)||g,this.onEditTagDone(null,ht({__isValid:!0},h))}else this[u?"addMixTags":"addTags"]([h||this.input.raw.call(this)],r);(u||this.DOM.input.parentNode)&&(setTimeout((function(){i.DOM.input.focus(),i.toggleFocusClass(!0)})),l&&setTimeout(this.dropdown.hide.bind(this)),a?n&&n():(t.addEventListener("transitionend",(function(){i.dropdown.fillHeaderFooter(),setTimeout((function(){t.remove(),i.dropdown.refilter(),n&&n()}),100)}),{once:!0}),t.classList.add(this.settings.classNames.dropdownItemHidden)))}else l&&setTimeout(this.dropdown.hide.bind(this))},selectAll:function(t){this.suggestedListItems.length=0,this.dropdown.hide(),this.dropdown.filterListItems("");var e=this.dropdown.filterListItems("");return t||(e=this.state.dropdown.suggestions),this.addTags(e,!0),this},filterListItems:function(t,e){var n,i,s,a,o,r,l=function(){var t,l,d=void 0,c=void 0;t=p[w],i=(null!=(l=Object)&&"undefined"!=typeof Symbol&&l[Symbol.hasInstance]?l[Symbol.hasInstance](t):t instanceof l)?p[w]:{value:p[w]};var f,m=Object.keys(i).some((function(t){return y.includes(t)}))?y:["value"];u.fuzzySearch&&!e.exact?(a=m.reduce((function(t,e){return t+" "+(i[e]||"")}),"").toLowerCase().trim(),u.accentedSearch&&(a=pt(a),r=pt(r)),d=0==a.indexOf(r),c=a===r,f=a,s=r.toLowerCase().split(" ").every((function(t){return f.includes(t.toLowerCase())}))):(d=!0,s=m.some((function(t){var n=""+(i[t]||"");return u.accentedSearch&&(n=pt(n),r=pt(r)),u.caseSensitive||(n=n.toLowerCase()),c=n===r,e.exact?n===r:0==n.indexOf(r)}))),o=!u.includeSelectedTags&&n.isTagDuplicate(ut(i)?i.value:i),s&&!o&&(c&&d?g.push(i):"startsWith"==u.sortby&&d?h.unshift(i):h.push(i))},d=this,c=this.settings,u=c.dropdown,h=(e=e||{},[]),g=[],p=c.whitelist,f=u.maxItems>=0?u.maxItems:1/0,m=u.includeSelectedTags,v="function"==typeof u.sortby,y=u.searchKeys,w=0;if(!(t="select"==c.mode&&this.value.length&&this.value[0][c.tagTextProp]==t?"":t)||!y.length){h=m?p:p.filter((function(t){return!d.isTagDuplicate(ut(t)?t.value:t)}));var b=v?u.sortby(h,r):h.slice(0,f);return this.state.dropdown.suggestions=b,b}for(r=u.caseSensitive?""+t:(""+t).toLowerCase();w[\r\n ]+\<").split(/>\s+<").trim():""},fillHeaderFooter:function(){var t=this.dropdown.filterListItems(this.state.dropdown.query),e=this.parseTemplate("dropdownHeader",[t]),n=this.parseTemplate("dropdownFooter",[t]),i=this.dropdown.getHeaderRef(),s=this.dropdown.getFooterRef();e&&(null==i||i.parentNode.replaceChild(e,i)),n&&(null==s||s.parentNode.replaceChild(n,s))},position:function(t){var e=this.settings.dropdown,n=this.dropdown.getAppendTarget();if("manual"!=e.position&&n){var i,s,a,o,r,l,d,c,u,h,g=this.DOM.dropdown,p=e.RTL,f=n===document.body,m=n===this.DOM.scope,v=f?window.pageYOffset:n.scrollTop,y=document.fullscreenElement||document.webkitFullscreenElement||document.documentElement,w=y.clientHeight,b=Math.max(y.clientWidth||0,window.innerWidth||0),T=b>480?e.position:"all",S=this.DOM["input"==T?"input":"scope"];if(t=t||g.clientHeight,this.state.dropdown.visible){if("text"==T?(a=(i=function(){var t=document.getSelection();if(t.rangeCount){var e,n,i=t.getRangeAt(0),s=i.startContainer,a=i.startOffset;if(a>0)return(n=document.createRange()).setStart(s,a-1),n.setEnd(s,a),{left:(e=n.getBoundingClientRect()).right,top:e.top,bottom:e.bottom};if(s.getBoundingClientRect)return s.getBoundingClientRect()}return{left:-9999,top:-9999}}()).bottom,s=i.top,o=i.left,r="auto"):(l=function(t){var e=0,n=0;for(t=t.parentNode;t&&t!=y;)e+=t.offsetTop||0,n+=t.offsetLeft||0,t=t.parentNode;return{top:e,left:n}}(n),i=S.getBoundingClientRect(),s=m?-1:i.top-l.top,a=(m?i.height:i.bottom-l.top)-1,o=m?-1:i.left-l.left,r=i.width+"px"),!f){var E=function(){for(var t=0,n=e.appendTarget.parentNode;n;)t+=n.scrollTop||0,n=n.parentNode;return t}();s+=E,a+=E}var x;s=Math.floor(s),a=Math.ceil(a),c=b-o<120,u=((d=null!==(x=e.placeAbove)&&void 0!==x?x:w-i.bottom\n ').concat(this.settings.templates.input.call(this),"\n ").concat(et,"\n ")},input:function(){var t=this.settings,e=t.placeholder||et;return"')},tag:function(t,e){var n=e.settings;return'\n \n
\n ').concat(t[n.tagTextProp]||t.value,"\n
\n
")},dropdown:function(t){var e=t.dropdown,n="manual"==e.position;return'
\n
\n
')},dropdownContent:function(t){var e=this.settings.templates,n=this.state.dropdown.suggestions;return"\n ".concat(e.dropdownHeader.call(this,n),"\n ").concat(t,"\n ").concat(e.dropdownFooter.call(this,n),"\n ")},dropdownItem:function(t){return"
').concat(t.mappedValue||t.value,"
")},dropdownHeader:function(t){return"
')},dropdownFooter:function(t){var e=t.length-this.settings.dropdown.maxItems;return e>0?"
\n ').concat(e," more items. Refine your search.\n
"):""},dropdownItemNoMatch:null};function jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],n=this.settings,i=this.events.callbacks,s=e?"addEventListener":"removeEventListener";if(!this.state.mainEvents||!e){for(var a in this.state.mainEvents=e,e&&!this.listeners.main&&(this.events.bindGlobal.call(this),this.settings.isJQueryPlugin&&jQuery(this.DOM.originalInput).on("tagify.removeAllTags",this.removeAllTags.bind(this))),t=this.listeners.main=this.listeners.main||{keydown:["input",i.onKeydown.bind(this)],click:["scope",i.onClickScope.bind(this)],dblclick:"select"!=n.mode&&["scope",i.onDoubleClickScope.bind(this)],paste:["input",i.onPaste.bind(this)],drop:["input",i.onDrop.bind(this)],compositionstart:["input",i.onCompositionStart.bind(this)],compositionend:["input",i.onCompositionEnd.bind(this)]})t[a]&&this.DOM[t[a][0]][s](a,t[a][1]);var o=this.listeners.main.inputMutationObserver||new MutationObserver(i.onInputDOMChange.bind(this));o.disconnect(),"mix"==n.mode&&o.observe(this.DOM.input,{childList:!0}),this.events.bindOriginaInputListener.call(this)}},bindOriginaInputListener:function(t){var e=(t||0)+500;this.listeners.main&&(clearInterval(this.listeners.main.originalInputValueObserverInterval),this.listeners.main.originalInputValueObserverInterval=setInterval(this.events.callbacks.observeOriginalInputValue.bind(this),e))},bindGlobal:function(t){var e,n=this.events.callbacks,i=t?"removeEventListener":"addEventListener";if(this.listeners&&(t||!this.listeners.global)){this.listeners.global=this.listeners.global||[{type:this.isIE?"keydown":"input",target:this.DOM.input,cb:n[this.isIE?"onInputIE":"onInput"].bind(this)},{type:"keydown",target:window,cb:n.onWindowKeyDown.bind(this)},{type:"focusin",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"focusout",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"click",target:document,cb:n.onClickAnywhere.bind(this),useCapture:!0}];var s=!0,a=!1,o=void 0;try{for(var r,l=this.listeners.global[Symbol.iterator]();!(s=(r=l.next()).done);s=!0)(e=r.value).target[i](e.type,e.cb,!!e.useCapture)}catch(t){a=!0,o=t}finally{try{s||null==l.return||l.return()}finally{if(a)throw o}}}},unbindGlobal:function(){this.events.bindGlobal.call(this,!0)},callbacks:{onFocusBlur:function(t){var e,n,i=this.settings,s=yt.call(this,t.relatedTarget),a=vt.call(this,t.relatedTarget),o=t.target.classList.contains(i.classNames.tagX),r="focusin"==t.type,l="focusout"==t.type;o&&"mix"!=i.mode&&this.DOM.input.focus(),s&&r&&!a&&!o&&this.toggleFocusClass(this.state.hasFocus=+new Date);var d=t.target?this.trim(this.DOM.input.textContent):"",c=null===(n=this.value)||void 0===n||null===(e=n[0])||void 0===e?void 0:e[i.tagTextProp],u=i.dropdown.enabled>=0,h={relatedTarget:t.relatedTarget},g=this.state.actions.selectOption&&(u||!i.dropdown.closeOnSelect),p=this.state.actions.addNew&&u;if(l){if(t.relatedTarget===this.DOM.scope)return this.dropdown.hide(),void this.DOM.input.focus();this.postUpdate(),i.onChangeAfterBlur&&this.triggerChangeEvent()}if(!(g||p||o))if(this.state.hasFocus=!(!r&&!s)&&+new Date,this.toggleFocusClass(this.state.hasFocus),"mix"!=i.mode){if(r){if(!i.focusable)return;var f=0===i.dropdown.enabled&&!this.state.dropdown.visible,m=!a||"select"===i.mode,v=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector);return this.trigger("focus",h),void(f&&m&&(this.dropdown.show(this.value.length?"":void 0),this.setRangeAtStartEnd(!1,v)))}if(l){if(this.trigger("blur",h),this.loading(!1),"select"==i.mode){if(this.value.length){var y=this.getTagElms()[0];d=this.trim(y.textContent)}c===d&&(d="")}d&&!this.state.actions.selectOption&&i.addTagOnBlur&&i.addTagOn.includes("blur")&&this.addTags(d,!0)}s||(this.DOM.input.removeAttribute("style"),this.dropdown.hide())}else r?this.trigger("focus",h):l&&(this.trigger("blur",h),this.loading(!1),this.dropdown.hide(),this.state.dropdown.visible=void 0,this.setStateSelection())},onCompositionStart:function(t){this.state.composing=!0},onCompositionEnd:function(t){this.state.composing=!1},onWindowKeyDown:function(t){var e,n=this.settings,i=document.activeElement,s=yt.call(this,i)&&this.DOM.scope.contains(i),a=i===this.DOM.input,o=s&&i.hasAttribute("readonly"),r=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),l=this.state.dropdown.visible;if(("Tab"===t.key&&l||this.state.hasFocus||s&&!o)&&!a){e=i.nextElementSibling;var d=t.target.classList.contains(n.classNames.tagX);switch(t.key){case"Backspace":n.readonly||this.state.editing||(this.removeTags(i),(e||this.DOM.input).focus());break;case"Enter":if(d)return void this.removeTags(t.target.parentNode);n.a11y.focusableTags&&vt.call(this,i)&&setTimeout(this.editTag.bind(this),0,i);break;case"ArrowDown":this.state.dropdown.visible||"mix"==n.mode||this.dropdown.show();break;case"Tab":null==r||r.focus()}}},onKeydown:function(t){var e=this,n=this.settings;if(!this.state.composing&&n.userInput){"select"==n.mode&&n.enforceWhitelist&&this.value.length&&"Tab"!=t.key&&t.preventDefault();var i=this.trim(t.target.textContent);this.trigger("keydown",{event:t}),n.hooks.beforeKeyDown(t,{tagify:this}).then((function(s){if("mix"==n.mode){switch(t.key){case"Left":case"ArrowLeft":e.state.actions.ArrowLeft=!0;break;case"Delete":case"Backspace":if(e.state.editing)return;var a=document.getSelection(),o="Delete"==t.key&&a.anchorOffset==(a.anchorNode.length||0),r=a.anchorNode.previousSibling,l=1==a.anchorNode.nodeType||!a.anchorOffset&&r&&1==r.nodeType&&a.anchorNode.previousSibling;!function(t){var e=document.createElement("div");t.replace(/\&#?[0-9a-z]+;/gi,(function(t){return e.innerHTML=t,e.innerText}))}(e.DOM.input.innerHTML);var d,c,u,h=e.getTagElms(),g=1===a.anchorNode.length&&a.anchorNode.nodeValue==String.fromCharCode(8203);if("edit"==n.backspace&&l)return d=1==a.anchorNode.nodeType?null:a.anchorNode.previousElementSibling,setTimeout(e.editTag.bind(e),0,d),void t.preventDefault();if(ft()&&Ht(l,Element))return u=dt(l),l.hasAttribute("readonly")||l.remove(),e.DOM.input.focus(),void setTimeout((function(){St(u),e.DOM.input.click()}));if("BR"==a.anchorNode.nodeName)return;if((o||l)&&1==a.anchorNode.nodeType?c=0==a.anchorOffset?o?h[0]:null:h[Math.min(h.length,a.anchorOffset)-1]:o?c=a.anchorNode.nextElementSibling:Ht(l,Element)&&(c=l),3==a.anchorNode.nodeType&&!a.anchorNode.nodeValue&&a.anchorNode.previousElementSibling&&t.preventDefault(),(l||o)&&!n.backspace)return void t.preventDefault();if("Range"!=a.type&&!a.anchorOffset&&a.anchorNode==e.DOM.input&&"Delete"!=t.key)return void t.preventDefault();if("Range"!=a.type&&c&&c.hasAttribute("readonly"))return void St(dt(c));"Delete"==t.key&&g&&Tt(a.anchorNode.nextSibling)&&e.removeTags(a.anchorNode.nextSibling)}return!0}var p="manual"==n.dropdown.position;switch(t.key){case"Backspace":"select"==n.mode&&n.enforceWhitelist&&e.value.length?e.removeTags():e.state.dropdown.visible&&"manual"!=n.dropdown.position||""!=t.target.textContent&&8203!=i.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0));break;case"Esc":case"Escape":if(e.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":e.state.dropdown.visible||e.dropdown.show();break;case"ArrowRight":var f=e.state.inputSuggestion||e.state.ddItemData;if(f&&n.autoComplete.rightKey)return void e.addTags([f],!0);break;case"Tab":return!0;case"Enter":if(e.state.dropdown.visible&&!p)return;t.preventDefault();var m=e.state.autoCompleteData||i;setTimeout((function(){e.state.dropdown.visible&&!p||e.state.actions.selectOption||!n.addTagOn.includes(t.key.toLowerCase())||(e.addTags([m],!0),e.state.autoCompleteData=null)}))}})).catch((function(t){return t}))}},onInput:function(t){this.postUpdate();var e=this.settings;if("mix"==e.mode)return this.events.callbacks.onMixTagsInput.call(this,t);var n=this.input.normalize.call(this,void 0,{trim:!1}),i=n.length>=e.dropdown.enabled,s={value:n,inputElm:this.DOM.input},a=this.validateTag({value:n});"select"==e.mode&&this.toggleScopeValidation(a),s.isValid=a,this.state.inputText!=n&&(this.input.set.call(this,n,!1),-1!=n.search(e.delimiters)?this.addTags(n)&&this.input.set.call(this):e.dropdown.enabled>=0&&this.dropdown[i?"show":"hide"](n),this.trigger("input",s))},onMixTagsInput:function(t){var e,n,i,s,a,o,r,l,d=this,c=this.settings,u=this.value.length,h=this.getTagElms(),g=document.createDocumentFragment(),p=window.getSelection().getRangeAt(0),f=[].map.call(h,(function(t){return Tt(t).value}));if("deleteContentBackward"==t.inputType&&ft()&&this.events.callbacks.onKeydown.call(this,{target:t.target,key:"Backspace"}),Et(this.getTagElms()),this.value.slice().forEach((function(t){t.readonly&&!f.includes(t.value)&&g.appendChild(d.createTagElem(t))})),g.childNodes.length&&(p.insertNode(g),this.setRangeAtStartEnd(!1,g.lastChild)),h.length!=u)return this.value=[].map.call(this.getTagElms(),(function(t){return Tt(t)})),void this.update({withoutChangeEvent:!0});if(this.hasMaxTags())return!0;if(window.getSelection&&(o=window.getSelection()).rangeCount>0&&3==o.anchorNode.nodeType){if((p=o.getRangeAt(0).cloneRange()).collapse(!0),p.setStart(o.focusNode,0),i=(e=p.toString().slice(0,p.endOffset)).split(c.pattern).length-1,(n=e.match(c.pattern))&&(s=e.slice(e.lastIndexOf(n[n.length-1]))),s){if(this.state.actions.ArrowLeft=!1,this.state.tag={prefix:s.match(c.pattern)[0],value:s.replace(c.pattern,"")},this.state.tag.baseOffset=o.baseOffset-this.state.tag.value.length,l=this.state.tag.value.match(c.delimiters))return this.state.tag.value=this.state.tag.value.replace(c.delimiters,""),this.state.tag.delimiters=l[0],this.addTags(this.state.tag.value,c.dropdown.clearOnSelect),void this.dropdown.hide();a=this.state.tag.value.length>=c.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||i500||!e.focusable)?this.state.dropdown.visible?this.dropdown.hide():0===e.dropdown.enabled&&"mix"!=e.mode&&this.dropdown.show(this.value.length?"":void 0):"select"!=e.mode||0!==e.dropdown.enabled||this.state.dropdown.visible||(this.events.callbacks.onDoubleClickScope.call(this,function(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n.push.apply(n,i)}return n}(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t}(function(t){for(var e=1;e=this.settings.dropdown.enabled&&(this.state.editing&&(this.state.editing.value=o),this.dropdown.show(o)),this.trigger("edit:input",{tag:i,index:s,data:ht({},this.value[s],{newValue:o}),event:e})},onEditTagPaste:function(t,e){var n=(e.clipboardData||window.clipboardData).getData("Text");e.preventDefault();var i=bt(n);this.setRangeAtStartEnd(!1,i)},onEditTagClick:function(t,e){this.events.callbacks.onClickScope.call(this,e)},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t,e){var n=vt.call(this,e.relatedTarget);if("select"==this.settings.mode&&n&&e.relatedTarget.contains(e.target))this.dropdown.hide();else if(this.state.editing&&(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(document.activeElement)||this.trigger("blur",{}),this.DOM.scope.contains(t))){var i,s,a,o=this.settings,r=t.closest("."+o.classNames.tag),l=Tt(r),d=this.input.normalize.call(this,t),c=(qt(i={},o.tagTextProp,d),qt(i,"__tagId",l.__tagId),i),u=l.__originalData,h=this.editTagChangeDetected(ht(l,c)),g=this.validateTag(c);if(d)if(h){var p;if(s=this.hasMaxTags(),a=ht({},u,(qt(p={},o.tagTextProp,this.trim(d)),qt(p,"__isValid",g),p)),o.transformTag.call(this,a,u),!0!==(g=(!s||!0===u.__isValid)&&this.validateTag(a))){if(this.trigger("invalid",{data:a,tag:r,message:g}),o.editTags.keepInvalid)return;o.keepInvalidTags?a.__isValid=g:a=u}else o.keepInvalidTags&&(delete a.title,delete a["aria-invalid"],delete a.class);this.onEditTagDone(r,a)}else this.onEditTagDone(r,u);else this.onEditTagDone(r)}},onEditTagkeydown:function(t,e){if(!this.state.composing)switch(this.trigger("edit:keydown",{event:t}),t.key){case"Esc":case"Escape":this.state.editing=!1,e.__tagifyTagData.__originalData.value?e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML,e):e.remove();break;case"Enter":case"Tab":t.preventDefault(),setTimeout((function(){return t.target.blur()}),0)}},onDoubleClickScope:function(t){var e=t.target.closest("."+this.settings.classNames.tag);if(e){var n,i,s=Tt(e),a=this.settings;!1!==(null==s?void 0:s.editable)&&(n=e.classList.contains(this.settings.classNames.tagEditing),i=e.hasAttribute("readonly"),a.readonly||n||i||!this.settings.editTags||!a.userInput||(this.events.callbacks.onEditTagFocus.call(this,e),this.editTag(e)),this.toggleFocusClass(!0),"select"!=a.mode&&this.trigger("dblclick",{tag:e,index:this.getNodeIndex(e),data:Tt(e)}))}},onInputDOMChange:function(t){var e=this;t.forEach((function(t){t.addedNodes.forEach((function(t){if("

"==t.outerHTML)t.replaceWith(document.createElement("br"));else if(1==t.nodeType&&t.querySelector(e.settings.classNames.tagSelector)){var n,i=document.createTextNode("");3==t.childNodes[0].nodeType&&"BR"!=t.previousSibling.nodeName&&(i=document.createTextNode("\n")),(n=t).replaceWith.apply(n,Rt([i].concat(Rt(Rt(t.childNodes).slice(0,-1))))),St(i)}else if(vt.call(e,t)){var s;if(3!=(null===(s=t.previousSibling)||void 0===s?void 0:s.nodeType)||t.previousSibling.textContent||t.previousSibling.remove(),t.previousSibling&&"BR"==t.previousSibling.nodeName){t.previousSibling.replaceWith("\n​");for(var a=t.nextSibling,o="";a;)o+=a.textContent,a=a.nextSibling;o.trim()&&St(t.previousSibling)}else t.previousSibling&&!Tt(t.previousSibling)||t.before("​")}})),t.removedNodes.forEach((function(t){t&&"BR"==t.nodeName&&vt.call(e,n)&&(e.removeTags(n),e.fixFirefoxLastTagNoCaret())}))}));var n=this.DOM.input.lastChild;n&&""==n.nodeValue&&n.remove(),n&&"BR"==n.nodeName||this.DOM.input.appendChild(document.createElement("br"))}}};function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.map((t=>t.value)),dropdown:{enabled:e.dropdownSuggestionsStartAfter,maxItems:e.dropdownMaxItems,closeOnSelect:e.dropdownCloseOnSelect,highlightFirst:e.highlight},transformTag(t){t.display||(t.display=t.value,t.value=encodeURIComponent(t.value)),t.display=t.display.replace(//g,">")},templates:{wrapper(t,e){return`
\n ${this.settings.templates.input.call(this)}\n ​\n
`},tag:t=>`
\n \n
\n ${t.display}\n
\n
`,dropdownItem:t=>`
\n ${t.display}\n
`}}}(e.id,n));o.addTags(i),void 0!==s&&o.on("input",(t=>{!function(t,e,n,i,s,a){Qt instanceof AbortController&&Qt.abort(),Qt=new AbortController,t.whitelist=null,void 0!==Gt&&(t.DOM.scope.ownerDocument.defaultView.clearTimeout(Gt),Gt=void 0),s.detail.value.length{const e=s.detail.value;n.writeParameter(i,e),t.loading(!0),fetch(n.getUrl().toString(),{signal:Qt.signal}).then((t=>t.json())).catch((()=>{})).then((n=>{t.whitelist=n,t.loading(!1).dropdown.show(e)}))}),a))}(o,n.suggestionStarts,s,a,t,n.autocompleteTriggerTimeout)}))}Jt.prototype={_dropdown:Lt,placeCaretAfterNode:St,getSetTagData:Tt,helpers:{sameStr:at,removeCollectionProp:ot,omit:rt,isObject:ut,parseHTML:lt,escapeHTML:ct,extend:ht,concatWithoutDups:gt,getUID:mt,isNodeTag:vt},customEventsList:["change","add","remove","invalid","input","paste","click","keydown","focus","blur","edit:input","edit:beforeUpdate","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select","dropdown:updated","dropdown:noMatch","dropdown:scroll"],dataProps:["__isValid","__removed","__originalData","__originalHTML","__tagId"],trim:function(t){return this.settings.trim&&t&&"string"==typeof t?t.trim():t},parseHTML:lt,templates:Bt,parseTemplate:function(t,e){return lt((t=this.settings.templates[t]||t).apply(this,e))},set whitelist(t){var e=t&&Array.isArray(t);this.settings.whitelist=e?t:[],this.setPersistedData(e?t:[],"whitelist")},get whitelist(){return this.settings.whitelist},set userInput(t){this.settings.userInput=!!t,this.setContentEditable(!!t)},get userInput(){return this.settings.userInput},generateClassSelectors:function(t){var e=function(e){var n=e;Object.defineProperty(t,n+"Selector",{get:function(){return"."+this[n].split(" ")[0]}})};for(var n in t)e(n)},applySettings:function(t,e){var n,i;xt.templates=this.templates;var s=ht({},xt,"mix"==e.mode?{dropdown:{position:"text"}}:{}),a=this.settings=ht({},s,e);if(a.disabled=t.hasAttribute("disabled"),a.readonly=a.readonly||t.hasAttribute("readonly"),a.placeholder=ct(t.getAttribute("placeholder")||a.placeholder||""),a.required=t.hasAttribute("required"),this.generateClassSelectors(a.classNames),this.isIE&&(a.autoComplete=!1),["whitelist","blacklist"].forEach((function(e){var n=t.getAttribute("data-"+e);n&&zt(n=n.split(a.delimiters),Array)&&(a[e]=n)})),"autoComplete"in e&&!ut(e.autoComplete)&&(a.autoComplete=xt.autoComplete,a.autoComplete.enabled=e.autoComplete),"mix"==a.mode&&(a.pattern=a.pattern||/@/,a.autoComplete.rightKey=!0,a.delimiters=e.delimiters||null,a.tagTextProp&&!a.dropdown.searchKeys.includes(a.tagTextProp)&&a.dropdown.searchKeys.push(a.tagTextProp)),t.pattern)try{a.pattern=new RegExp(t.pattern)}catch(t){}if(a.delimiters){a._delimiters=a.delimiters;try{a.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}}a.disabled&&(a.userInput=!1),this.TEXTS=Kt({},Pt,a.texts||{}),"select"==a.mode&&(a.dropdown.includeSelectedTags=!0),("select"!=a.mode||(null===(n=e.dropdown)||void 0===n?void 0:n.enabled))&&a.userInput||(a.dropdown.enabled=0),a.dropdown.appendTarget=(null===(i=e.dropdown)||void 0===i?void 0:i.appendTarget)||document.body,void 0===a.dropdown.includeSelectedTags&&(a.dropdown.includeSelectedTags=a.duplicates);var o=this.getPersistedData("whitelist");Array.isArray(o)&&(this.whitelist=Array.isArray(a.whitelist)?gt(a.whitelist,o):o)},getAttributes:function(t){var e,n=this.getCustomAttributes(t),i="";for(e in n)i+=" "+e+(void 0!==t[e]?'="'.concat(n[e],'"'):"");return i},getCustomAttributes:function(t){if(!ut(t))return"";var e,n={};for(e in t)"__"!=e.slice(0,2)&&"class"!=e&&t.hasOwnProperty(e)&&void 0!==t[e]&&(n[e]=ct(t[e]));return n},setStateSelection:function(){var t=window.getSelection(),e={anchorOffset:t.anchorOffset,anchorNode:t.anchorNode,range:t.getRangeAt&&t.rangeCount&&t.getRangeAt(0)};return this.state.selection=e,e},getCSSVars:function(){var t,e,n=getComputedStyle(this.DOM.scope,null);this.CSSVars={tagHideTransition:(t=function(t){if(!t)return{};var e=(t=t.trim().split(" ")[0]).split(/\d+/g).filter((function(t){return t})).pop().trim();return{value:+t.split(e).filter((function(t){return t}))[0].trim(),unit:e}}(("tag-hide-transition",n.getPropertyValue("--tag-hide-transition"))),e=t.value,"s"==t.unit?1e3*e:e)}},build:function(t){var e=this.DOM,n=t.closest("label");this.settings.mixMode.integrated?(e.originalInput=null,e.scope=t,e.input=t):(e.originalInput=t,e.originalInput_tabIndex=t.tabIndex,e.scope=this.parseTemplate("wrapper",[t,this.settings]),e.input=e.scope.querySelector(this.settings.classNames.inputSelector),t.parentNode.insertBefore(e.scope,t),t.tabIndex=-1),n&&n.setAttribute("for","")},destroy:function(){var t;this.events.unbindGlobal.call(this),null===(t=this.DOM.scope.parentNode)||void 0===t||t.removeChild(this.DOM.scope),this.DOM.originalInput.tabIndex=this.DOM.originalInput_tabIndex,delete this.DOM.originalInput.__tagify,this.dropdown.hide(!0),this.removeAllCustomListeners(),clearTimeout(this.dropdownHide__bindEventsTimeout),clearInterval(this.listeners.main.originalInputValueObserverInterval)},loadOriginalValues:function(t){var e,n=this.settings;if(this.state.blockChangeEvent=!0,void 0===t){var i=this.getPersistedData("value");t=i&&!this.DOM.originalInput.value?i:n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value}if(this.removeAllTags(),t)if("mix"==n.mode)this.parseMixTags(t),(e=this.DOM.input.lastChild)&&"BR"==e.tagName||this.DOM.input.insertAdjacentHTML("beforeend","
");else{try{zt(JSON.parse(t),Array)&&(t=JSON.parse(t))}catch(t){}this.addTags(t,!0).forEach((function(t){return t&&t.classList.add(n.classNames.tagNoAnimation)}))}else this.postUpdate();this.state.lastOriginalValueReported=n.mixMode.integrated?"":this.DOM.originalInput.value},cloneEvent:function(t){var e={};for(var n in t)"path"!=n&&(e[n]=t[n]);return e},loading:function(t){return this.state.isLoading=t,this.DOM.scope.classList[t?"add":"remove"](this.settings.classNames.scopeLoading),this},tagLoading:function(t,e){return t&&t.classList[e?"add":"remove"](this.settings.classNames.tagLoading),this},toggleClass:function(t,e){"string"==typeof t&&this.DOM.scope.classList.toggle(t,e)},toggleScopeValidation:function(t){var e=!0===t||void 0===t;!this.settings.required&&t&&t===this.TEXTS.empty&&(e=!0),this.toggleClass(this.settings.classNames.tagInvalid,!e),this.DOM.scope.title=e?"":t},toggleFocusClass:function(t){this.toggleClass(this.settings.classNames.focus,!!t)},setPlaceholder:function(t){var e=this;["data","aria"].forEach((function(n){return e.DOM.input.setAttribute("".concat(n,"-placeholder"),t)}))},triggerChangeEvent:function(){if(!this.settings.mixMode.integrated){var t=this.DOM.originalInput,e=this.state.lastOriginalValueReported!==t.value,n=new CustomEvent("change",{bubbles:!0});e&&(this.state.lastOriginalValueReported=t.value,n.simulated=!0,t._valueTracker&&t._valueTracker.setValue(Math.random()),t.dispatchEvent(n),this.trigger("change",this.state.lastOriginalValueReported),t.value=this.state.lastOriginalValueReported)}},events:$t,fixFirefoxLastTagNoCaret:function(){},setRangeAtStartEnd:function(t,e){if(e){t="number"==typeof t?t:!!t,e=e.lastChild||e;var n=document.getSelection();if(zt(n.focusNode,Element)&&!this.DOM.input.contains(n.focusNode))return!0;try{n.rangeCount>=1&&["Start","End"].forEach((function(i){return n.getRangeAt(0)["set"+i](e,t||e.length)}))}catch(t){console.warn(t)}}},insertAfterTag:function(t,e){if(e=e||this.settings.mixMode.insertAfterTag,t&&t.parentNode&&e)return e="string"==typeof e?document.createTextNode(e):e,t.parentNode.insertBefore(e,t.nextSibling),e},editTagChangeDetected:function(t){var e=t.__originalData;for(var n in e)if(!this.dataProps.includes(n)&&t[n]!=e[n])return!0;return!1},getTagTextNode:function(t){return t.querySelector(this.settings.classNames.tagTextSelector)},setTagTextNode:function(t,e){this.getTagTextNode(t).innerHTML=ct(e)},editTag:function(t,e){var n=this;t=t||this.getLastTag(),e=e||{};var i=this.settings,s=this.getTagTextNode(t),a=this.getNodeIndex(t),o=Tt(t),r=this.events.callbacks,l=!0,d="select"==i.mode;if(!d&&this.dropdown.hide(),s){if(!zt(o,Object)||!("editable"in o)||o.editable)return o=Tt(t,{__originalData:ht({},o),__originalHTML:t.cloneNode(!0)}),Tt(o.__originalHTML,o.__originalData),s.setAttribute("contenteditable",!0),t.classList.add(i.classNames.tagEditing),this.events.callbacks.onEditTagFocus.call(this,t),s.addEventListener("click",r.onEditTagClick.bind(this,t)),s.addEventListener("blur",r.onEditTagBlur.bind(this,this.getTagTextNode(t))),s.addEventListener("input",r.onEditTagInput.bind(this,s)),s.addEventListener("paste",r.onEditTagPaste.bind(this,s)),s.addEventListener("keydown",(function(e){return r.onEditTagkeydown.call(n,e,t)})),s.addEventListener("compositionstart",r.onCompositionStart.bind(this)),s.addEventListener("compositionend",r.onCompositionEnd.bind(this)),e.skipValidation||(l=this.editTagToggleValidity(t)),s.originalIsValid=l,this.trigger("edit:start",{tag:t,index:a,data:o,isValid:l}),s.focus(),!d&&this.setRangeAtStartEnd(!1,s),0===i.dropdown.enabled&&!d&&this.dropdown.show(),this.state.hasFocus=!0,this}else st.warn("Cannot find element in Tag template: .",i.classNames.tagTextSelector)},editTagToggleValidity:function(t,e){var n;if(e=e||Tt(t))return(n=!("__isValid"in e)||!0===e.__isValid)||this.removeTagsFromValue(t),this.update(),t.classList.toggle(this.settings.classNames.tagNotAllowed,!n),e.__isValid=n,e.__isValid;st.warn("tag has no data: ",t,e)},onEditTagDone:function(t,e){t=t||this.state.editing.scope,e=e||{};var n,i,s=this.settings,a={tag:t,index:this.getNodeIndex(t),previousData:Tt(t),data:e};this.trigger("edit:beforeUpdate",a,{cloneData:!1}),this.state.editing=!1,delete e.__originalData,delete e.__originalHTML,t&&t.parentNode&&((void 0!==(i=e[s.tagTextProp])?null===(n=(i+="").trim)||void 0===n?void 0:n.call(i):s.tagTextProp in e?void 0:e.value)?(t=this.replaceTag(t,e),this.editTagToggleValidity(t,e),s.a11y.focusableTags?t.focus():"select"!=s.mode&&St(t)):this.removeTags(t)),this.trigger("edit:updated",a),s.dropdown.closeOnSelect&&this.dropdown.hide(),this.settings.keepInvalidTags&&this.reCheckInvalidTags()},replaceTag:function(t,e){e&&""!==e.value&&void 0!==e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&ht(e,this.getInvalidTagAttrs(e,e.__isValid));var n=this.createTagElem(e);return t.parentNode.replaceChild(n,t),this.updateValueByDOMTags(),n},updateValueByDOMTags:function(){var t=this;this.value.length=0;var e=this.settings.classNames,n=[e.tagNotAllowed.split(" ")[0],e.tagHide];[].forEach.call(this.getTagElms(),(function(e){Xt(e.classList).some((function(t){return n.includes(t)}))||t.value.push(Tt(e))})),this.update(),this.dropdown.refilter()},injectAtCaret:function(t,e){var n;if(e=e||(null===(n=this.state.selection)||void 0===n?void 0:n.range),"string"==typeof t&&(t=document.createTextNode(t)),!e&&t)return this.appendMixTags(t),this;var i=bt(t,e);return this.setRangeAtStartEnd(!1,i),this.updateValueByDOMTags(),this.update(),this},input:{set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.settings,i=n.dropdown.closeOnSelect;this.state.inputText=t,e&&(this.DOM.input.innerHTML=ct(""+t),t&&this.toggleClass(n.classNames.empty,!this.DOM.input.innerHTML)),!t&&i&&this.dropdown.hide.bind(this),this.input.autocomplete.suggest.call(this),this.input.validate.call(this)},raw:function(){return this.DOM.input.textContent},validate:function(){var t=!this.state.inputText||!0===this.validateTag({value:this.state.inputText});return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid,!t),t},normalize:function(t,e){var n=t||this.DOM.input,i=[];n.childNodes.forEach((function(t){return 3==t.nodeType&&i.push(t.nodeValue)})),i=i.join("\n");try{i=i.replace(/(?:\r\n|\r|\n)/g,this.settings.delimiters.source.charAt(0))}catch(t){}return i=i.replace(/\s/g," "),(null==e?void 0:e.trim)?this.trim(i):i},autocomplete:{suggest:function(t){if(this.settings.autoComplete.enabled){"object"!=typeof(t=t||{value:""})&&(t={value:t});var e=this.dropdown.getMappedValue(t);if("number"!=typeof e){var n=this.state.inputText.toLowerCase(),i=e.substr(0,this.state.inputText.length).toLowerCase(),s=e.substring(this.state.inputText.length);e&&this.state.inputText&&i==n?(this.DOM.input.setAttribute("data-suggest",s),this.state.inputSuggestion=t):(this.DOM.input.removeAttribute("data-suggest"),delete this.state.inputSuggestion)}}},set:function(t){var e=this.DOM.input.getAttribute("data-suggest"),n=t||(e?this.state.inputText+e:null);return!!n&&("mix"==this.settings.mode?this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix+n)):(this.input.set.call(this,n),this.setRangeAtStartEnd(!1,this.DOM.input)),this.input.autocomplete.suggest.call(this),this.dropdown.hide(),!0)}}},getTagIdx:function(t){return this.value.findIndex((function(e){return e.__tagId==(t||{}).__tagId}))},getNodeIndex:function(t){var e=0;if(t)for(;t=t.previousElementSibling;)e++;return e},getTagElms:function(){for(var t=arguments.length,e=new Array(t),n=0;n=this.settings.maxTags&&this.TEXTS.exceed},setReadonly:function(t,e){var n=this.settings;this.DOM.scope.contains(document.activeElement)&&document.activeElement.blur(),n[e||"readonly"]=t,this.DOM.scope[(t?"set":"remove")+"Attribute"](e||"readonly",!0),this.settings.userInput=!0,this.setContentEditable(!t)},setContentEditable:function(t){this.DOM.input.contentEditable=t,this.DOM.input.tabIndex=t?0:-1},setDisabled:function(t){this.setReadonly(t,"disabled")},normalizeTags:function(t){var e=this,n=this.settings,i=n.whitelist,s=n.delimiters,a=n.mode,o=n.tagTextProp,r=[],l=!!i&&zt(i[0],Object),d=Array.isArray(t),c=d&&t[0].value,u=function(t){return(t+"").split(s).reduce((function(t,n){var i,s=e.trim(n);return s&&t.push((Wt(i={},o,s),Wt(i,"value",s),i)),t}),[])};if("number"==typeof t&&(t=t.toString()),"string"==typeof t){if(!t.trim())return[];t=u(t)}else d&&(t=t.reduce((function(t,n){if(ut(n)){var i=ht({},n);o in i||(o="value"),i[o]=e.trim(i[o]),(i[o]||0===i[o])&&t.push(i)}else if(null!=n&&""!==n&&void 0!==n){var s;(s=t).push.apply(s,Xt(u(n)))}return t}),[]));return l&&!c&&(t.forEach((function(t){var n=r.map((function(t){return t.value})),i=e.dropdown.filterListItems.call(e,t[o],{exact:!0});e.settings.duplicates||(i=i.filter((function(t){return!n.includes(t.value)})));var s=i.length>1?e.getWhitelistItem(t[o],o,i):i[0];s&&zt(s,Object)?r.push(s):"mix"!=a&&(null==t.value&&(t.value=t[o]),r.push(t))})),r.length&&(t=r)),t},parseMixTags:function(t){var e=this,n=this.settings,i=n.mixTagsInterpolator,s=n.duplicates,a=n.transformTag,o=n.enforceWhitelist,r=n.maxTags,l=n.tagTextProp,d=[];t=t.split(i[0]).map((function(t,n){var c,u,h,g=t.split(i[1]),p=g[0],f=d.length==r;try{if(p==+p)throw Error;u=JSON.parse(p)}catch(t){u=e.normalizeTags(p)[0]||{value:p}}if(a.call(e,u),f||!(g.length>1)||o&&!e.isTagWhitelisted(u.value)||!s&&e.isTagDuplicate(u.value)){if(t)return n?i[0]+t:t}else u[c=u[l]?l:"value"]=e.trim(u[c]),h=e.createTagElem(u),d.push(u),h.classList.add(e.settings.classNames.tagNoAnimation),g[0]=h.outerHTML,e.value.push(u);return g.join("")})).join(""),this.DOM.input.innerHTML=t,this.DOM.input.appendChild(document.createTextNode("")),this.DOM.input.normalize();var c=this.getTagElms();return c.forEach((function(t,e){return Tt(t,d[e])})),this.update({withoutChangeEvent:!0}),Et(c,this.state.hasFocus),t},replaceTextWithNode:function(t,e){if(this.state.tag||e){e=e||this.state.tag.prefix+this.state.tag.value;var n,i,s=this.state.selection||window.getSelection(),a=s.anchorNode,o=this.state.tag.delimiters?this.state.tag.delimiters.length:0;return a.splitText(s.anchorOffset-o),-1==(n=a.nodeValue.lastIndexOf(e))||(i=a.splitText(n),t&&a.parentNode.replaceChild(t,i)),!0}},prepareNewTagNode:function(t,e){e=e||{};var n=this.settings,i=[],s={},a=Object.assign({},t,{value:t.value+""});if(t=Object.assign({},a),n.transformTag.call(this,t),t.__isValid=this.hasMaxTags()||this.validateTag(t),!0!==t.__isValid){if(e.skipInvalid)return;if(ht(s,this.getInvalidTagAttrs(t,t.__isValid),{__preInvalidData:a}),t.__isValid==this.TEXTS.duplicate&&this.flashTag(this.getTagElmByValue(t.value)),!n.createInvalidTags)return void i.push(t.value)}return"readonly"in t&&(t.readonly?s["aria-readonly"]=!0:delete t.readonly),{tagElm:this.createTagElem(t,s),tagData:t,aggregatedInvalidInput:i}},postProcessNewTagNode:function(t,e){var n=this,i=this.settings,s=e.__isValid;s&&!0===s?this.value.push(e):(this.trigger("invalid",{data:e,index:this.value.length,tag:t,message:s}),i.keepInvalidTags||setTimeout((function(){return n.removeTags(t,!0)}),1e3)),this.dropdown.position()},selectTag:function(t,e){var n=this;if(!this.settings.enforceWhitelist||this.isTagWhitelisted(e.value)){this.state.actions.selectOption&&setTimeout((function(){return n.setRangeAtStartEnd(!1,n.DOM.input)}));var i=this.getLastTag();return i?this.replaceTag(i,e):this.appendTag(t),this.value[0]=e,this.update(),this.trigger("add",{tag:t,data:e}),[t]}},addEmptyTag:function(t){var e=ht({value:""},t||{}),n=this.createTagElem(e);Tt(n,e),this.appendTag(n),this.editTag(n,{skipValidation:!0}),this.toggleFocusClass(!0)},addTags:function(t,e,n){var i=this,s=[],a=this.settings,o=[],r=document.createDocumentFragment(),l=[];if(!t||0==t.length)return s;switch(t=this.normalizeTags(t),a.mode){case"mix":return this.addMixTags(t);case"select":e=!1,this.removeAllTags()}return this.DOM.input.removeAttribute("style"),t.forEach((function(t){var e=i.prepareNewTagNode(t,{skipInvalid:n||a.skipInvalid});if(e){var d=e.tagElm;if(t=e.tagData,o=e.aggregatedInvalidInput,s.push(d),"select"==a.mode)return i.selectTag(d,t);r.appendChild(d),i.postProcessNewTagNode(d,t),l.push({tagElm:d,tagData:t})}})),this.appendTag(r),l.forEach((function(t){var e=t.tagElm,n=t.tagData;return i.trigger("add",{tag:e,index:i.getTagIdx(n),data:n})})),this.update(),t.length&&e&&(this.input.set.call(this,a.createInvalidTags?"":o.join(a._delimiters)),this.setRangeAtStartEnd(!1,this.DOM.input)),this.dropdown.refilter(),s},addMixTags:function(t){var e=this;if((t=this.normalizeTags(t))[0].prefix||this.state.tag)return this.prefixedTextToTag(t[0]);var n=document.createDocumentFragment();return t.forEach((function(t){var i=e.prepareNewTagNode(t);n.appendChild(i.tagElm),e.insertAfterTag(i.tagElm),e.postProcessNewTagNode(i.tagElm,i.tagData)})),this.appendMixTags(n),n.children},appendMixTags:function(t){var e=!!this.state.selection;e?this.injectAtCaret(t):(this.DOM.input.focus(),(e=this.setStateSelection()).range.setStart(this.DOM.input,e.range.endOffset),e.range.setEnd(this.DOM.input,e.range.endOffset),this.DOM.input.appendChild(t),this.updateValueByDOMTags(),this.update())},prefixedTextToTag:function(t){var e,n,i,s=this,a=this.settings,o=null===(e=this.state.tag)||void 0===e?void 0:e.delimiters;if(t.prefix=t.prefix||this.state.tag?this.state.tag.prefix:(a.pattern.source||a.pattern)[0],i=this.prepareNewTagNode(t),n=i.tagElm,this.replaceTextWithNode(n)||this.DOM.input.appendChild(n),setTimeout((function(){return n.classList.add(s.settings.classNames.tagNoAnimation)}),300),this.update(),!o){var r=this.insertAfterTag(n)||n;setTimeout(St,0,r)}return this.state.tag=null,this.postProcessNewTagNode(n,i.tagData),n},appendTag:function(t){var e=this.DOM,n=e.input;e.scope.insertBefore(t,n)},createTagElem:function(t,e){t.__tagId=mt();var n,i=ht({},t,Kt({value:ct(t.value+"")},e));return function(t){for(var e,n=document.createNodeIterator(t,NodeFilter.SHOW_TEXT,null,!1);e=n.nextNode();)e.textContent.trim()||e.parentNode.removeChild(e)}(n=this.parseTemplate("tag",[i,this])),Tt(n,t),n},reCheckInvalidTags:function(){var t=this,e=this.settings;this.getTagElms(e.classNames.tagNotAllowed).forEach((function(n,i){var s=Tt(n),a=t.hasMaxTags(),o=t.validateTag(s),r=!0===o&&!a;if("select"==e.mode&&t.toggleScopeValidation(o),r)return s=s.__preInvalidData?s.__preInvalidData:{value:s.value},t.replaceTag(n,s);n.title=a||o}))},removeTags:function(t,e,n){var i,s=this,a=this.settings;if(t=t&&zt(t,HTMLElement)?[t]:zt(t,Array)?t:t?[t]:[this.getLastTag()].filter((function(t){return t})),i=t.reduce((function(t,e){e&&"string"==typeof e&&(e=s.getTagElmByValue(e));var n=Tt(e);return e&&n&&!n.readonly&&t.push({node:e,idx:s.getTagIdx(n),data:Tt(e,{__removed:!0})}),t}),[]),n="number"==typeof n?n:this.CSSVars.tagHideTransition,"select"==a.mode&&(n=0,this.input.set.call(this)),1==i.length&&"select"!=a.mode&&i[0].node.classList.contains(a.classNames.tagNotAllowed)&&(e=!0),i.length)return a.hooks.beforeRemoveTag(i,{tagify:this}).then((function(){var t=function(t){t.node.parentNode&&(t.node.parentNode.removeChild(t.node),e?a.keepInvalidTags&&this.trigger("remove",{tag:t.node,index:t.idx}):(this.trigger("remove",{tag:t.node,index:t.idx,data:t.data}),this.dropdown.refilter(),this.dropdown.position(),this.DOM.input.normalize(),a.keepInvalidTags&&this.reCheckInvalidTags()))};n&&n>10&&1==i.length?function(e){e.node.style.width=parseFloat(window.getComputedStyle(e.node).width)+"px",document.body.clientTop,e.node.classList.add(a.classNames.tagHide),setTimeout(t.bind(this),n,e)}.call(s,i[0]):i.forEach(t.bind(s)),e||(s.removeTagsFromValue(i.map((function(t){return t.node}))),s.update(),"select"==a.mode&&a.userInput&&s.setContentEditable(!0))})).catch((function(t){}))},removeTagsFromDOM:function(){this.getTagElms().forEach((function(t){return t.remove()}))},removeTagsFromValue:function(t){var e=this;(t=Array.isArray(t)?t:[t]).forEach((function(t){var n=Tt(t),i=e.getTagIdx(n);i>-1&&e.value.splice(i,1)}))},removeAllTags:function(t){var e=this;t=t||{},this.value=[],"mix"==this.settings.mode?this.DOM.input.innerHTML="":this.removeTagsFromDOM(),this.dropdown.refilter(),this.dropdown.position(),this.state.dropdown.visible&&setTimeout((function(){e.DOM.input.focus()})),"select"==this.settings.mode&&(this.input.set.call(this),this.settings.userInput&&this.setContentEditable(!0)),this.update(t)},postUpdate:function(){this.state.blockChangeEvent=!1;var t,e,n=this.settings,i=n.classNames,s="mix"==n.mode?n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value.trim():this.value.length+this.input.raw.call(this).length;this.toggleClass(i.hasMaxTags,this.value.length>=n.maxTags),this.toggleClass(i.hasNoTags,!this.value.length),this.toggleClass(i.empty,!s),"select"==n.mode&&this.toggleScopeValidation(null===(e=this.value)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.__isValid)},setOriginalInputValue:function(t){var e=this.DOM.originalInput;this.settings.mixMode.integrated||(e.value=t,e.tagifyValue=e.value,this.setPersistedData(t,"value"))},update:function(t){clearTimeout(this.debouncedUpdateTimeout),this.debouncedUpdateTimeout=setTimeout(function(){var e=this.getInputValue();this.setOriginalInputValue(e),this.settings.onChangeAfterBlur&&(t||{}).withoutChangeEvent||this.state.blockChangeEvent||this.triggerChangeEvent(),this.postUpdate()}.bind(this),100),this.events.bindOriginaInputListener.call(this,100)},getInputValue:function(){var t=this.getCleanValue();return"mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):""},getCleanValue:function(t){return ot(t||this.value,this.dataProps)},getMixedTagsAsString:function(){var t="",e=this,n=this.settings,i=n.originalInputValueFormat||JSON.stringify,s=n.mixTagsInterpolator;return function n(a){a.childNodes.forEach((function(a){if(1==a.nodeType){var o=Tt(a);if("BR"==a.tagName&&(t+="\r\n"),o&&vt.call(e,a)){if(o.__removed)return;t+=s[0]+i(rt(o,e.dataProps))+s[1]}else a.getAttribute("style")||["B","I","U"].includes(a.tagName)?t+=a.textContent:"DIV"!=a.tagName&&"P"!=a.tagName||(t+="\r\n",n(a))}else t+=a.textContent}))}(this.DOM.input),t}},Jt.prototype.removeTag=Jt.prototype.removeTags;const Zt="radio-field-input",te="multi-select-field-input";class ee{#U;#W;#z;#K;#X;#J;#Q;#G;#Y;#Z;#tt;#et;#nt;#it;#st;#at;#ot;#rt=null;#lt;#dt;#ct;#ut;#ht;#gt=null;#pt=null;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g,p,f,m,v,y){this.#U=t,this.#Z=o,this.#W=r,this.#z=l,this.#K=d,this.#X=c,this.#nt=u,this.#it=h,this.#st=g,this.#at=y,this.#lt=e,this.#dt=n,this.#ct=i,this.#ut=s,this.#ht=a,this.#ot=this.#at.innerHTML,this.#Y=p,this.#J=f,this.#Q=m,this.#G=v,this.#et=!1,this.#tt=!1,this.isAsync()&&(this.clearOptionElements(),this.loadOptionsDataSourceValues().then((()=>{this.#st.style.display="none"}))),this.#W.addEventListener("input",(t=>{this.isAsync()?this.handleOptionsDataSource(t.target).then((()=>{this.filterItemsSearch(t)})):this.filterItemsSearch(t)})),this.#Y.addEventListener("click",(()=>{this.setFiltered(!1)})),this.#J.addEventListener("click",(()=>{this.isAsync()&&(this.#W.value="",this.clearOptionElements()),this.toggleVisibility()})),"radio-field-input"===this.#z&&this.#X.forEach((t=>{t.addEventListener("change",(()=>{this.scrollListToTop()}))}))}isAsync(){return null!==this.#lt&&void 0!==this.#lt}isEngaged(){return this.#et}isFiltered(){return this.#tt}setFiltered(t){this.#tt!==t&&(this.#tt=t,t?(this.#Y.style.removeProperty("display"),this.#at.style.removeProperty("display")):(this.#W.value="",this.#Y.style.display="none",this.#at.style.display="none",this.#nt.style.display="none",this.#ft()))}toggleVisibility(){this.isEngaged()?(this.#et=!1,this.#U.classList.remove("engaged"),this.setFiltered(!1),this.#J.setAttribute("aria-expanded","false"),this.#Q.style.removeProperty("display"),this.#G.style.display="none",this.#it.classList.add("hidden")):(this.#et=!0,this.#U.classList.add("engaged"),this.#J.setAttribute("aria-expanded","true"),this.#Q.style.display="none",this.#G.style.removeProperty("display"),this.isAsync()&&this.#it.classList.remove("hidden"))}#mt(t){this.#U.ownerDocument.defaultView.clearTimeout(this.#rt),this.#rt=this.#U.ownerDocument.defaultView.setTimeout((()=>{this.#at.textContent="",this.#U.ownerDocument.defaultView.requestAnimationFrame((()=>{this.#at.textContent=t}))}),500)}#vt(t){const e=$(this.#ot,t);this.#mt(e)}loadOptionsDataSourceValues(){return new Promise(((t,e)=>{"string"==typeof this.#ht||this.#ht instanceof String||this.#ht instanceof Array?this.fetchDataSource(new Map([[this.#ct,this.#ht]])).then((n=>{n&&n instanceof Array?(n.forEach((t=>{this.#K.append(this.optionsDataSourceDataToElement(t,!0))})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),t()):e()})):t()})).catch((t=>{if(t instanceof Error)throw t}))}handleOptionsDataSource(t){return this.#pt instanceof AbortController&&this.#pt.abort(),this.#pt=new AbortController,void 0!==this.#gt&&(clearTimeout(this.#gt),this.#gt=void 0),new Promise(((e,n)=>{if(t.value.length{const i=t.value;return this.fetchDataSource(new Map([[this.#dt,i]]),this.#pt.signal).then((t=>{t&&t instanceof Array?(this.clearOptionElements(),t.forEach((t=>{const e=this.optionsDataSourceDataToElement(t);this.#K.querySelector(`[data-value='${e.dataset.value}'][data-display='${e.dataset.display}']`)||this.#K.append(e)})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),e(),this.#st.style.display="none"):n(new Error("Invalid data received from data source fetch"))}))}),200)})).catch((t=>{if(t instanceof Error)throw t}))}fetchDataSource(t,e=null){const n=new URL(this.#lt,document.location);t.forEach(((t,e)=>{t instanceof Array?t.forEach((t=>{n.searchParams.append(`${e}[]`,t)})):n.searchParams.set(e,t)}));const i={};return e instanceof AbortController&&(i.signal=e.signal),fetch(n,i).then((t=>t.json())).catch((()=>{}))}clearOptionElements(t=!1){Array.from(this.#K.children).forEach((e=>{if(t)this.#K.removeChild(e);else{const t=e.querySelector("input");t&&t.checked||this.#K.removeChild(e)}})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item")}optionsDataSourceDataToElement(t,e=!1){const n=Math.random().toString(16).slice(2),i=document.createElement("input");i.id=n,i.value=t.value;const s=document.createElement("label");let a;switch(s.htmlFor=n,this.#z){case Zt:a=document.createElement("div"),a.className="c-field-radio__item c-field--has-option-filter__item",i.type="radio",i.name=this.#U.dataset.ilUiInputName,s.innerText=t.display,a.append(i),a.append(s);break;case te:a=document.createElement("li"),a.className="c-field--has-option-filter__item",i.type="checkbox",i.name=`${this.#U.dataset.ilUiInputName}[]`;const e=document.createElement("span");e.className="c-field-multiselect__label-text",e.innerText=t.display,s.append(i),s.append(e),a.append(s);break;default:throw new Error(`Unsupported list type '${this.#z}' received`)}return i.checked=e,a.dataset.value=t.value,a.dataset.display=t.display,a.dataset.searchBy=t.searchBy,a}filterItemsSearch(t){const e=t.target.value.toLowerCase();this.setFiltered(!!e);let n=0,i=!1;this.#X.forEach((t=>{t.textContent.toLowerCase().includes(e)?(n+=1,i=!0,ne(t)):function(t){t.style.display="none"}(t)})),this.#vt(n.toString()),""!==e&&!1===i?this.#nt.style.removeProperty("display"):(""===e||i)&&(this.#nt.style.display="none")}#ft(){this.#X.forEach((t=>ne(t)))}scrollListToTop(){this.#Z.scrollTo({top:0,behavior:"smooth"})}}function ne(t){t.style.removeProperty("display")}class ie{#V=new Map;init(t,e,n,i,s,a){if(void 0===t)throw new TypeError("During init of an InputHasOptionFilter an undefined element was passed to the factory.");if(this.#V.has(t.id))throw new Error(`A InputHasOptionFilter with id '${t.id}' has already been initialized.`);const o=t,r=o.querySelector(".c-input--has-option-filter__field"),l=o.querySelector(".c-input--has-option-filter__search-input input"),d=o.getAttribute("data-il-ui-component"),c=o.querySelector(".c-field--has-option-filter__list"),u=c.querySelectorAll(".c-field--has-option-filter__item"),h=o.querySelector(".message-no-match"),g=o.querySelector(".message-async-start-search"),p=o.querySelector('.c-input--has-option-filter__synopsis [role="status"]'),f=o.querySelector(".c-input--has-option-filter__loader"),m=o.querySelector(".c-input--has-option-filter__clear-search"),v=o.querySelector(".c-input--has-option-filter__visibility-toggle"),y=v.querySelector(".text-expand"),w=v.querySelector(".text-collapse"),b=new ee(t,""===e?null:e,n,i,s,JSON.parse(a),r,l,d,c,u,h,g,f,m,v,y,w,p);return this.#V.set(t.id,b),b}get(t){return this.#V.has(t)?this.#V.get(t):null}}var se;e.UI=e.UI||{},e.UI.Input=e.UI.Input||{},(se=e.UI.Input).textarea=new o,se.mustacheVariables={init:(t,e)=>function(t,e){e.querySelectorAll(".c-input--has-mustache-variables__definitions > li > a").forEach((e=>{const n=function(t){const e=t.textContent.match(/^\s*\{\{([^}]+)\}\}\s*$/);return e?e[1].trim():null}(e);e.addEventListener("click",(()=>{t.insertCharactersAroundSelection(`{{${n}}}`,"")}))}))}(t,e)},se.markdown=new y,se.optionFilter=new ie,se.treeSelect=new Z(new tt(t),e.UI.menu.drilldown,{txt:t=>e.Language.txt(t)},n),se.tagInput=se.tag||{},se.tagInput.init=(t,e,n,i,s)=>Yt(Jt,t,e,n,i,s)}($,il,document); diff --git a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js index 5286b6dec66a..8e2ca9ae9218 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js +++ b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilter.js @@ -335,7 +335,7 @@ export default class OptionFilter { this.#engageDisengageToggle.setAttribute('aria-expanded', 'false'); this.#toggleExpandText.style.removeProperty('display'); this.#toggleCollapseText.style.display = 'none'; - this.#messageAsyncStartSearch.style.display = 'none'; + this.#messageAsyncStartSearch.classList.add('hidden'); } else { this.#isEngaged = true; this.#inputFieldContext.classList.add('engaged'); @@ -343,7 +343,7 @@ export default class OptionFilter { this.#toggleExpandText.style.display = 'none'; this.#toggleCollapseText.style.removeProperty('display'); if (this.isAsync()) { - this.#messageAsyncStartSearch.style.removeProperty('display'); + this.#messageAsyncStartSearch.classList.remove('hidden'); } } } @@ -417,14 +417,14 @@ export default class OptionFilter { return new Promise((resolve, reject) => { if (input.value.length < this.#optionsDataSourceSuggestionStart) { - this.#messageAsyncStartSearch.style.removeProperty('display'); + this.#messageAsyncStartSearch.classList.remove('hidden'); this.clearOptionElements(); return; } this.#loaderAnimation.style.removeProperty('display'); - this.#messageAsyncStartSearch.style.display = 'none'; + this.#messageAsyncStartSearch.classList.add('hidden'); this.#optionsDataSourceTimeoutId = setTimeout( () => { const searchTerm = input.value; diff --git a/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html b/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html index dc916ee88dc4..aacead97c310 100644 --- a/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html +++ b/components/ILIAS/UI/src/templates/default/Input/tpl.option_filter.html @@ -23,8 +23,8 @@
{NOTHING_SELECTED}
{INPUT} - style="display: none"> + - + From 937d433ca23e57e85d2e40af2d48c84850eb4467 Mon Sep 17 00:00:00 2001 From: Marvin Beym Date: Fri, 27 Feb 2026 10:29:11 +0100 Subject: [PATCH 6/7] Fix test --- .../tests/Component/Input/Field/HasOptionFilterTestHelper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/ILIAS/UI/tests/Component/Input/Field/HasOptionFilterTestHelper.php b/components/ILIAS/UI/tests/Component/Input/Field/HasOptionFilterTestHelper.php index 5a555db2c12b..af6f090f529d 100644 --- a/components/ILIAS/UI/tests/Component/Input/Field/HasOptionFilterTestHelper.php +++ b/components/ILIAS/UI/tests/Component/Input/Field/HasOptionFilterTestHelper.php @@ -68,14 +68,14 @@ function ($matches) { // getting html up to and after nested input $start_cut_anchor = 'c-input--has-option-filter__nothing-selected'; - $end_cut_anchor = '', $start_pos); $cut_after_pos = $closing_div_pos + mb_strlen(''); $span_pos = mb_strpos($html, $end_cut_anchor, $cut_after_pos); $filter_before_nesting = $strip_ids_fn(parent::brutallyTrimHTML('
ui_field_option_filter_no_selection
')); - $filter_after_nesting = $strip_ids_fn(parent::brutallyTrimHTML('
')); + $filter_after_nesting = $strip_ids_fn(parent::brutallyTrimHTML('')); $expected_before_nesting = mb_substr($html, 0, $cut_after_pos); $expected_after_nesting = mb_substr($html, $span_pos); From ffb9b5f00d267a30917df0827ab48326bb71669f Mon Sep 17 00:00:00 2001 From: Marvin Beym Date: Fri, 27 Feb 2026 10:38:14 +0100 Subject: [PATCH 7/7] Define default values --- .../js/Input/Field/dist/input.factory.min.js | 2 +- .../Field/src/OptionFilter/OptionFilterFactory.js | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js b/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js index 7a290c460c3a..ef357bf7e009 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js +++ b/components/ILIAS/UI/resources/js/Input/Field/dist/input.factory.min.js @@ -38,4 +38,4 @@ This Software may not be rebranded and sold as a library under any other name other than "Tagify" (by owner) or as part of another library. - */var et="​";function nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n/g,">").replace(/"/g,""").replace(/`|'/g,"'"):t}function ut(t){var e=Object.prototype.toString.call(t).split(" ")[1].slice(0,-1);return t===Object(t)&&"Array"!=e&&"Function"!=e&&"RegExp"!=e&&"HTMLUnknownElement"!=e}function ht(t,e,n){var i,s;function a(t,e){for(var n in e)if(e.hasOwnProperty(n)){if(ut(e[n])){ut(t[n])?a(t[n],e[n]):t[n]=Object.assign({},e[n]);continue}if(Array.isArray(e[n])){t[n]=Object.assign([],e[n]);continue}t[n]=e[n]}}return i=t,(null!=(s=Object)&&"undefined"!=typeof Symbol&&s[Symbol.hasInstance]?s[Symbol.hasInstance](i):i instanceof s)||(t={}),a(t,e),n&&a(t,n),t}function gt(){var t=[],e={},n=!0,i=!1,s=void 0;try{for(var a,o=arguments[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var r=a.value,l=!0,d=!1,c=void 0;try{for(var u,h=r[Symbol.iterator]();!(l=(u=h.next()).done);l=!0){var g=u.value;ut(g)?e[g.value]||(t.push(g),e[g.value]=1):t.includes(g)||t.push(g)}}catch(t){d=!0,c=t}finally{try{l||null==h.return||h.return()}finally{if(d)throw c}}}}catch(t){i=!0,s=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw s}}return t}function pt(t){return String.prototype.normalize?"string"==typeof t?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):void 0:t}var ft=function(){return/(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function vt(t){var e;return wt.call(this,t)&&(null==t||null===(e=t.classList)||void 0===e?void 0:e.contains(this.settings.classNames.tag))}function yt(t){return wt.call(this,t)&&(null==t?void 0:t.closest(this.settings.classNames.tagSelector))}function wt(t){var e;return(null==t||null===(e=t.closest)||void 0===e?void 0:e.call(t,this.settings.classNames.namespaceSelector))===this.DOM.scope}function bt(t,e){var n=window.getSelection();return e=e||n.getRangeAt(0),"string"==typeof t&&(t=document.createTextNode(t)),e&&(e.deleteContents(),e.insertNode(t)),t}function Tt(t,e,n){return t?(e&&(t.__tagifyTagData=n?e:ht({},t.__tagifyTagData||{},e)),t.__tagifyTagData):(st.warn("tag element doesn't exist",{tagElm:t,data:e}),e)}function St(t){if(t&&t.parentNode){var e=t,n=window.getSelection(),i=n.getRangeAt(0);n.rangeCount&&(i.setStartAfter(e),i.collapse(!0),n.removeAllRanges(),n.addRange(i))}}function Et(t,e){t.forEach((function(t){if(Tt(t.previousSibling)||!t.previousSibling){var n=document.createTextNode("​");t.before(n),e&&St(n)}}))}var xt={delimiters:",",pattern:null,tagTextProp:"value",maxTags:1/0,callbacks:{},addTagOnBlur:!0,addTagOn:["blur","tab","enter"],onChangeAfterBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,userInput:!0,focusable:!0,keepInvalidTags:!1,createInvalidTags:!0,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,pasteAsTags:!0,editTags:{clicks:2,keepInvalid:!0},transformTag:function(){},trim:!0,a11y:{focusableTags:!1},mixMode:{insertAfterTag:" "},autoComplete:{enabled:!0,rightKey:!1,tabKey:!1},classNames:{namespace:"tagify",mixMode:"tagify--mix",selectMode:"tagify--select",input:"tagify__input",focus:"tagify--focus",tagNoAnimation:"tagify--noAnim",tagInvalid:"tagify--invalid",tagNotAllowed:"tagify--notAllowed",scopeLoading:"tagify--loading",hasMaxTags:"tagify--hasMaxTags",hasNoTags:"tagify--noTags",empty:"tagify--empty",inputInvalid:"tagify__input--invalid",dropdown:"tagify__dropdown",dropdownWrapper:"tagify__dropdown__wrapper",dropdownHeader:"tagify__dropdown__header",dropdownFooter:"tagify__dropdown__footer",dropdownItem:"tagify__dropdown__item",dropdownItemActive:"tagify__dropdown__item--active",dropdownItemHidden:"tagify__dropdown__item--hidden",dropdownItemSelected:"tagify__dropdown__item--selected",dropdownInital:"tagify__dropdown--initial",tag:"tagify__tag",tagText:"tagify__tag-text",tagX:"tagify__tag__removeBtn",tagLoading:"tagify__tag--loading",tagEditing:"tagify__tag--editable",tagFlash:"tagify__tag--flash",tagHide:"tagify__tag--hide"},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:["value","searchBy"],fuzzySearch:!0,caseSensitive:!1,accentedSearch:!0,includeSelectedTags:!1,escapeHTML:!0,highlightFirst:!0,closeOnSelect:!0,clearOnSelect:!0,position:"all",appendTarget:null},hooks:{beforeRemoveTag:function(){return Promise.resolve()},beforePaste:function(){return Promise.resolve()},suggestionClick:function(){return Promise.resolve()},beforeKeyDown:function(){return Promise.resolve()}}};function Ot(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],e=this.dropdown.events.callbacks,n=this.listeners.dropdown=this.listeners.dropdown||{position:this.dropdown.position.bind(this,null),onKeyDown:e.onKeyDown.bind(this),onMouseOver:e.onMouseOver.bind(this),onMouseLeave:e.onMouseLeave.bind(this),onClick:e.onClick.bind(this),onScroll:e.onScroll.bind(this)},i=t?"addEventListener":"removeEventListener";"manual"!=this.settings.dropdown.position&&(document[i]("scroll",n.position,!0),window[i]("resize",n.position),window[i]("keydown",n.onKeyDown)),this.DOM.dropdown[i]("mouseover",n.onMouseOver),this.DOM.dropdown[i]("mouseleave",n.onMouseLeave),this.DOM.dropdown[i]("mousedown",n.onClick),this.DOM.dropdown.content[i]("scroll",n.onScroll)},callbacks:{onKeyDown:function(t){var e=this;if(this.state.hasFocus&&!this.state.composing){var n=this.settings,i=n.dropdown.includeSelectedTags,s=this.DOM.dropdown.querySelector(n.classNames.dropdownItemActiveSelector),a=this.dropdown.getSuggestionDataByNode(s),o="mix"==n.mode,r="select"==n.mode;n.hooks.beforeKeyDown(t,{tagify:this}).then((function(l){switch(t.key){case"ArrowDown":case"ArrowUp":case"Down":case"Up":t.preventDefault();var d=e.dropdown.getAllSuggestionsRefs(),c="ArrowUp"==t.key||"Up"==t.key;s&&(s=e.dropdown.getNextOrPrevOption(s,!c)),s&&s.matches(n.classNames.dropdownItemSelector)||(s=d[c?d.length-1:0]),e.dropdown.highlightOption(s,!0);break;case"PageUp":case"PageDown":var u;t.preventDefault();var h=e.dropdown.getAllSuggestionsRefs(),g=Math.floor(e.DOM.dropdown.content.clientHeight/(null===(u=h[0])||void 0===u?void 0:u.offsetHeight))||1,p="PageUp"===t.key;if(s){var f=h.indexOf(s),m=p?Math.max(0,f-g):Math.min(h.length-1,f+g);s=h[m]}else s=h[0];e.dropdown.highlightOption(s,!0);break;case"Home":case"End":t.preventDefault();var v=e.dropdown.getAllSuggestionsRefs();s=v["Home"===t.key?0:v.length-1],e.dropdown.highlightOption(s,!0);break;case"Escape":case"Esc":e.dropdown.hide();break;case"ArrowRight":if(e.state.actions.ArrowLeft||n.autoComplete.rightKey)return;case"Tab":var y=!n.autoComplete.rightKey||!n.autoComplete.tabKey;if(!o&&!r&&s&&y&&!e.state.editing&&a){t.preventDefault();var w=e.dropdown.getMappedValue(a);return e.state.autoCompleteData=a,e.input.autocomplete.set.call(e,w),!1}return!0;case"Enter":t.preventDefault(),e.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),n.hooks.suggestionClick(t,{tagify:e,tagData:a,suggestionElm:s}).then((function(){if(s){var n=i?s:e.dropdown.getNextOrPrevOption(s,!c);e.dropdown.selectOption(s,t,(function(){if(n){var t=n.getAttribute("value");n=e.dropdown.getSuggestionNodeByValue(t),e.dropdown.highlightOption(n)}}))}else e.dropdown.hide(),o||e.addTags(e.state.inputText.trim(),!0)})).catch((function(t){return st.warn(t)}));break;case"Backspace":if(o||e.state.editing.scope)return;var b=e.input.raw.call(e);""!=b&&8203!=b.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0))}}))}},onMouseOver:function(t){var e=t.target.closest(this.settings.classNames.dropdownItemSelector);this.dropdown.highlightOption(e)},onMouseLeave:function(t){this.dropdown.highlightOption()},onClick:function(t){var e=this;if(0==t.button&&t.target!=this.DOM.dropdown&&t.target!=this.DOM.dropdown.content){var n=t.target.closest(this.settings.classNames.dropdownItemSelector),i=this.dropdown.getSuggestionDataByNode(n);this.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),this.settings.hooks.suggestionClick(t,{tagify:this,tagData:i,suggestionElm:n}).then((function(){n?e.dropdown.selectOption(n,t):e.dropdown.hide()})).catch((function(t){return st.warn(t)}))}},onScroll:function(t){var e=t.target,n=e.scrollTop/(e.scrollHeight-e.parentNode.clientHeight)*100;this.trigger("dropdown:scroll",{percentage:Math.round(n)})}}},refilter:function(t){t=t||this.state.dropdown.query||"",this.suggestedListItems=this.dropdown.filterListItems(t),this.dropdown.fill(),this.suggestedListItems.length||this.dropdown.hide(),this.trigger("dropdown:updated",this.DOM.dropdown)},getSuggestionDataByNode:function(t){for(var e,n=t&&t.getAttribute("value"),i=this.suggestedListItems.length;i--;){if(ut(e=this.suggestedListItems[i])&&e.value==n)return e;if(e==n)return{value:e}}},getSuggestionNodeByValue:function(t){return this.dropdown.getAllSuggestionsRefs().find((function(e){return e.getAttribute("value")===t}))},getNextOrPrevOption:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.dropdown.getAllSuggestionsRefs(),i=n.findIndex((function(e){return e===t}));return e?n[i+1]:n[i-1]},highlightOption:function(t,e){var n,i=this.settings.classNames.dropdownItemActive;if(this.state.ddItemElm&&(this.state.ddItemElm.classList.remove(i),this.state.ddItemElm.removeAttribute("aria-selected")),!t)return this.state.ddItemData=null,this.state.ddItemElm=null,void this.input.autocomplete.suggest.call(this);n=this.dropdown.getSuggestionDataByNode(t),this.state.ddItemData=n,this.state.ddItemElm=t,t.classList.add(i),t.setAttribute("aria-selected",!0),e&&(t.parentNode.scrollTop=t.clientHeight+t.offsetTop-t.parentNode.clientHeight),this.settings.autoComplete&&(this.input.autocomplete.suggest.call(this,n),this.dropdown.position())},selectOption:function(t,e,n){var i=this,s=this.settings,a=s.dropdown.includeSelectedTags,o=s.dropdown,r=o.clearOnSelect,l=o.closeOnSelect;if(!t)return this.addTags(this.state.inputText,!0),void(l&&this.dropdown.hide());e=e||{};var d=t.getAttribute("value"),c="noMatch"==d,u="mix"==s.mode,h=this.suggestedListItems.find((function(t){var e;return(null!==(e=t.value)&&void 0!==e?e:t)==d}));if(this.trigger("dropdown:select",{data:h,elm:t,event:e}),h||c){if(this.state.editing){var g=this.normalizeTags([h])[0];h=s.transformTag.call(this,g)||g,this.onEditTagDone(null,ht({__isValid:!0},h))}else this[u?"addMixTags":"addTags"]([h||this.input.raw.call(this)],r);(u||this.DOM.input.parentNode)&&(setTimeout((function(){i.DOM.input.focus(),i.toggleFocusClass(!0)})),l&&setTimeout(this.dropdown.hide.bind(this)),a?n&&n():(t.addEventListener("transitionend",(function(){i.dropdown.fillHeaderFooter(),setTimeout((function(){t.remove(),i.dropdown.refilter(),n&&n()}),100)}),{once:!0}),t.classList.add(this.settings.classNames.dropdownItemHidden)))}else l&&setTimeout(this.dropdown.hide.bind(this))},selectAll:function(t){this.suggestedListItems.length=0,this.dropdown.hide(),this.dropdown.filterListItems("");var e=this.dropdown.filterListItems("");return t||(e=this.state.dropdown.suggestions),this.addTags(e,!0),this},filterListItems:function(t,e){var n,i,s,a,o,r,l=function(){var t,l,d=void 0,c=void 0;t=p[w],i=(null!=(l=Object)&&"undefined"!=typeof Symbol&&l[Symbol.hasInstance]?l[Symbol.hasInstance](t):t instanceof l)?p[w]:{value:p[w]};var f,m=Object.keys(i).some((function(t){return y.includes(t)}))?y:["value"];u.fuzzySearch&&!e.exact?(a=m.reduce((function(t,e){return t+" "+(i[e]||"")}),"").toLowerCase().trim(),u.accentedSearch&&(a=pt(a),r=pt(r)),d=0==a.indexOf(r),c=a===r,f=a,s=r.toLowerCase().split(" ").every((function(t){return f.includes(t.toLowerCase())}))):(d=!0,s=m.some((function(t){var n=""+(i[t]||"");return u.accentedSearch&&(n=pt(n),r=pt(r)),u.caseSensitive||(n=n.toLowerCase()),c=n===r,e.exact?n===r:0==n.indexOf(r)}))),o=!u.includeSelectedTags&&n.isTagDuplicate(ut(i)?i.value:i),s&&!o&&(c&&d?g.push(i):"startsWith"==u.sortby&&d?h.unshift(i):h.push(i))},d=this,c=this.settings,u=c.dropdown,h=(e=e||{},[]),g=[],p=c.whitelist,f=u.maxItems>=0?u.maxItems:1/0,m=u.includeSelectedTags,v="function"==typeof u.sortby,y=u.searchKeys,w=0;if(!(t="select"==c.mode&&this.value.length&&this.value[0][c.tagTextProp]==t?"":t)||!y.length){h=m?p:p.filter((function(t){return!d.isTagDuplicate(ut(t)?t.value:t)}));var b=v?u.sortby(h,r):h.slice(0,f);return this.state.dropdown.suggestions=b,b}for(r=u.caseSensitive?""+t:(""+t).toLowerCase();w[\r\n ]+\<").split(/>\s+<").trim():""},fillHeaderFooter:function(){var t=this.dropdown.filterListItems(this.state.dropdown.query),e=this.parseTemplate("dropdownHeader",[t]),n=this.parseTemplate("dropdownFooter",[t]),i=this.dropdown.getHeaderRef(),s=this.dropdown.getFooterRef();e&&(null==i||i.parentNode.replaceChild(e,i)),n&&(null==s||s.parentNode.replaceChild(n,s))},position:function(t){var e=this.settings.dropdown,n=this.dropdown.getAppendTarget();if("manual"!=e.position&&n){var i,s,a,o,r,l,d,c,u,h,g=this.DOM.dropdown,p=e.RTL,f=n===document.body,m=n===this.DOM.scope,v=f?window.pageYOffset:n.scrollTop,y=document.fullscreenElement||document.webkitFullscreenElement||document.documentElement,w=y.clientHeight,b=Math.max(y.clientWidth||0,window.innerWidth||0),T=b>480?e.position:"all",S=this.DOM["input"==T?"input":"scope"];if(t=t||g.clientHeight,this.state.dropdown.visible){if("text"==T?(a=(i=function(){var t=document.getSelection();if(t.rangeCount){var e,n,i=t.getRangeAt(0),s=i.startContainer,a=i.startOffset;if(a>0)return(n=document.createRange()).setStart(s,a-1),n.setEnd(s,a),{left:(e=n.getBoundingClientRect()).right,top:e.top,bottom:e.bottom};if(s.getBoundingClientRect)return s.getBoundingClientRect()}return{left:-9999,top:-9999}}()).bottom,s=i.top,o=i.left,r="auto"):(l=function(t){var e=0,n=0;for(t=t.parentNode;t&&t!=y;)e+=t.offsetTop||0,n+=t.offsetLeft||0,t=t.parentNode;return{top:e,left:n}}(n),i=S.getBoundingClientRect(),s=m?-1:i.top-l.top,a=(m?i.height:i.bottom-l.top)-1,o=m?-1:i.left-l.left,r=i.width+"px"),!f){var E=function(){for(var t=0,n=e.appendTarget.parentNode;n;)t+=n.scrollTop||0,n=n.parentNode;return t}();s+=E,a+=E}var x;s=Math.floor(s),a=Math.ceil(a),c=b-o<120,u=((d=null!==(x=e.placeAbove)&&void 0!==x?x:w-i.bottom\n ').concat(this.settings.templates.input.call(this),"\n ").concat(et,"\n ")},input:function(){var t=this.settings,e=t.placeholder||et;return"')},tag:function(t,e){var n=e.settings;return'\n \n
\n ').concat(t[n.tagTextProp]||t.value,"\n
\n
")},dropdown:function(t){var e=t.dropdown,n="manual"==e.position;return'
\n
\n
')},dropdownContent:function(t){var e=this.settings.templates,n=this.state.dropdown.suggestions;return"\n ".concat(e.dropdownHeader.call(this,n),"\n ").concat(t,"\n ").concat(e.dropdownFooter.call(this,n),"\n ")},dropdownItem:function(t){return"
').concat(t.mappedValue||t.value,"
")},dropdownHeader:function(t){return"
')},dropdownFooter:function(t){var e=t.length-this.settings.dropdown.maxItems;return e>0?"
\n ').concat(e," more items. Refine your search.\n
"):""},dropdownItemNoMatch:null};function jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],n=this.settings,i=this.events.callbacks,s=e?"addEventListener":"removeEventListener";if(!this.state.mainEvents||!e){for(var a in this.state.mainEvents=e,e&&!this.listeners.main&&(this.events.bindGlobal.call(this),this.settings.isJQueryPlugin&&jQuery(this.DOM.originalInput).on("tagify.removeAllTags",this.removeAllTags.bind(this))),t=this.listeners.main=this.listeners.main||{keydown:["input",i.onKeydown.bind(this)],click:["scope",i.onClickScope.bind(this)],dblclick:"select"!=n.mode&&["scope",i.onDoubleClickScope.bind(this)],paste:["input",i.onPaste.bind(this)],drop:["input",i.onDrop.bind(this)],compositionstart:["input",i.onCompositionStart.bind(this)],compositionend:["input",i.onCompositionEnd.bind(this)]})t[a]&&this.DOM[t[a][0]][s](a,t[a][1]);var o=this.listeners.main.inputMutationObserver||new MutationObserver(i.onInputDOMChange.bind(this));o.disconnect(),"mix"==n.mode&&o.observe(this.DOM.input,{childList:!0}),this.events.bindOriginaInputListener.call(this)}},bindOriginaInputListener:function(t){var e=(t||0)+500;this.listeners.main&&(clearInterval(this.listeners.main.originalInputValueObserverInterval),this.listeners.main.originalInputValueObserverInterval=setInterval(this.events.callbacks.observeOriginalInputValue.bind(this),e))},bindGlobal:function(t){var e,n=this.events.callbacks,i=t?"removeEventListener":"addEventListener";if(this.listeners&&(t||!this.listeners.global)){this.listeners.global=this.listeners.global||[{type:this.isIE?"keydown":"input",target:this.DOM.input,cb:n[this.isIE?"onInputIE":"onInput"].bind(this)},{type:"keydown",target:window,cb:n.onWindowKeyDown.bind(this)},{type:"focusin",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"focusout",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"click",target:document,cb:n.onClickAnywhere.bind(this),useCapture:!0}];var s=!0,a=!1,o=void 0;try{for(var r,l=this.listeners.global[Symbol.iterator]();!(s=(r=l.next()).done);s=!0)(e=r.value).target[i](e.type,e.cb,!!e.useCapture)}catch(t){a=!0,o=t}finally{try{s||null==l.return||l.return()}finally{if(a)throw o}}}},unbindGlobal:function(){this.events.bindGlobal.call(this,!0)},callbacks:{onFocusBlur:function(t){var e,n,i=this.settings,s=yt.call(this,t.relatedTarget),a=vt.call(this,t.relatedTarget),o=t.target.classList.contains(i.classNames.tagX),r="focusin"==t.type,l="focusout"==t.type;o&&"mix"!=i.mode&&this.DOM.input.focus(),s&&r&&!a&&!o&&this.toggleFocusClass(this.state.hasFocus=+new Date);var d=t.target?this.trim(this.DOM.input.textContent):"",c=null===(n=this.value)||void 0===n||null===(e=n[0])||void 0===e?void 0:e[i.tagTextProp],u=i.dropdown.enabled>=0,h={relatedTarget:t.relatedTarget},g=this.state.actions.selectOption&&(u||!i.dropdown.closeOnSelect),p=this.state.actions.addNew&&u;if(l){if(t.relatedTarget===this.DOM.scope)return this.dropdown.hide(),void this.DOM.input.focus();this.postUpdate(),i.onChangeAfterBlur&&this.triggerChangeEvent()}if(!(g||p||o))if(this.state.hasFocus=!(!r&&!s)&&+new Date,this.toggleFocusClass(this.state.hasFocus),"mix"!=i.mode){if(r){if(!i.focusable)return;var f=0===i.dropdown.enabled&&!this.state.dropdown.visible,m=!a||"select"===i.mode,v=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector);return this.trigger("focus",h),void(f&&m&&(this.dropdown.show(this.value.length?"":void 0),this.setRangeAtStartEnd(!1,v)))}if(l){if(this.trigger("blur",h),this.loading(!1),"select"==i.mode){if(this.value.length){var y=this.getTagElms()[0];d=this.trim(y.textContent)}c===d&&(d="")}d&&!this.state.actions.selectOption&&i.addTagOnBlur&&i.addTagOn.includes("blur")&&this.addTags(d,!0)}s||(this.DOM.input.removeAttribute("style"),this.dropdown.hide())}else r?this.trigger("focus",h):l&&(this.trigger("blur",h),this.loading(!1),this.dropdown.hide(),this.state.dropdown.visible=void 0,this.setStateSelection())},onCompositionStart:function(t){this.state.composing=!0},onCompositionEnd:function(t){this.state.composing=!1},onWindowKeyDown:function(t){var e,n=this.settings,i=document.activeElement,s=yt.call(this,i)&&this.DOM.scope.contains(i),a=i===this.DOM.input,o=s&&i.hasAttribute("readonly"),r=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),l=this.state.dropdown.visible;if(("Tab"===t.key&&l||this.state.hasFocus||s&&!o)&&!a){e=i.nextElementSibling;var d=t.target.classList.contains(n.classNames.tagX);switch(t.key){case"Backspace":n.readonly||this.state.editing||(this.removeTags(i),(e||this.DOM.input).focus());break;case"Enter":if(d)return void this.removeTags(t.target.parentNode);n.a11y.focusableTags&&vt.call(this,i)&&setTimeout(this.editTag.bind(this),0,i);break;case"ArrowDown":this.state.dropdown.visible||"mix"==n.mode||this.dropdown.show();break;case"Tab":null==r||r.focus()}}},onKeydown:function(t){var e=this,n=this.settings;if(!this.state.composing&&n.userInput){"select"==n.mode&&n.enforceWhitelist&&this.value.length&&"Tab"!=t.key&&t.preventDefault();var i=this.trim(t.target.textContent);this.trigger("keydown",{event:t}),n.hooks.beforeKeyDown(t,{tagify:this}).then((function(s){if("mix"==n.mode){switch(t.key){case"Left":case"ArrowLeft":e.state.actions.ArrowLeft=!0;break;case"Delete":case"Backspace":if(e.state.editing)return;var a=document.getSelection(),o="Delete"==t.key&&a.anchorOffset==(a.anchorNode.length||0),r=a.anchorNode.previousSibling,l=1==a.anchorNode.nodeType||!a.anchorOffset&&r&&1==r.nodeType&&a.anchorNode.previousSibling;!function(t){var e=document.createElement("div");t.replace(/\&#?[0-9a-z]+;/gi,(function(t){return e.innerHTML=t,e.innerText}))}(e.DOM.input.innerHTML);var d,c,u,h=e.getTagElms(),g=1===a.anchorNode.length&&a.anchorNode.nodeValue==String.fromCharCode(8203);if("edit"==n.backspace&&l)return d=1==a.anchorNode.nodeType?null:a.anchorNode.previousElementSibling,setTimeout(e.editTag.bind(e),0,d),void t.preventDefault();if(ft()&&Ht(l,Element))return u=dt(l),l.hasAttribute("readonly")||l.remove(),e.DOM.input.focus(),void setTimeout((function(){St(u),e.DOM.input.click()}));if("BR"==a.anchorNode.nodeName)return;if((o||l)&&1==a.anchorNode.nodeType?c=0==a.anchorOffset?o?h[0]:null:h[Math.min(h.length,a.anchorOffset)-1]:o?c=a.anchorNode.nextElementSibling:Ht(l,Element)&&(c=l),3==a.anchorNode.nodeType&&!a.anchorNode.nodeValue&&a.anchorNode.previousElementSibling&&t.preventDefault(),(l||o)&&!n.backspace)return void t.preventDefault();if("Range"!=a.type&&!a.anchorOffset&&a.anchorNode==e.DOM.input&&"Delete"!=t.key)return void t.preventDefault();if("Range"!=a.type&&c&&c.hasAttribute("readonly"))return void St(dt(c));"Delete"==t.key&&g&&Tt(a.anchorNode.nextSibling)&&e.removeTags(a.anchorNode.nextSibling)}return!0}var p="manual"==n.dropdown.position;switch(t.key){case"Backspace":"select"==n.mode&&n.enforceWhitelist&&e.value.length?e.removeTags():e.state.dropdown.visible&&"manual"!=n.dropdown.position||""!=t.target.textContent&&8203!=i.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0));break;case"Esc":case"Escape":if(e.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":e.state.dropdown.visible||e.dropdown.show();break;case"ArrowRight":var f=e.state.inputSuggestion||e.state.ddItemData;if(f&&n.autoComplete.rightKey)return void e.addTags([f],!0);break;case"Tab":return!0;case"Enter":if(e.state.dropdown.visible&&!p)return;t.preventDefault();var m=e.state.autoCompleteData||i;setTimeout((function(){e.state.dropdown.visible&&!p||e.state.actions.selectOption||!n.addTagOn.includes(t.key.toLowerCase())||(e.addTags([m],!0),e.state.autoCompleteData=null)}))}})).catch((function(t){return t}))}},onInput:function(t){this.postUpdate();var e=this.settings;if("mix"==e.mode)return this.events.callbacks.onMixTagsInput.call(this,t);var n=this.input.normalize.call(this,void 0,{trim:!1}),i=n.length>=e.dropdown.enabled,s={value:n,inputElm:this.DOM.input},a=this.validateTag({value:n});"select"==e.mode&&this.toggleScopeValidation(a),s.isValid=a,this.state.inputText!=n&&(this.input.set.call(this,n,!1),-1!=n.search(e.delimiters)?this.addTags(n)&&this.input.set.call(this):e.dropdown.enabled>=0&&this.dropdown[i?"show":"hide"](n),this.trigger("input",s))},onMixTagsInput:function(t){var e,n,i,s,a,o,r,l,d=this,c=this.settings,u=this.value.length,h=this.getTagElms(),g=document.createDocumentFragment(),p=window.getSelection().getRangeAt(0),f=[].map.call(h,(function(t){return Tt(t).value}));if("deleteContentBackward"==t.inputType&&ft()&&this.events.callbacks.onKeydown.call(this,{target:t.target,key:"Backspace"}),Et(this.getTagElms()),this.value.slice().forEach((function(t){t.readonly&&!f.includes(t.value)&&g.appendChild(d.createTagElem(t))})),g.childNodes.length&&(p.insertNode(g),this.setRangeAtStartEnd(!1,g.lastChild)),h.length!=u)return this.value=[].map.call(this.getTagElms(),(function(t){return Tt(t)})),void this.update({withoutChangeEvent:!0});if(this.hasMaxTags())return!0;if(window.getSelection&&(o=window.getSelection()).rangeCount>0&&3==o.anchorNode.nodeType){if((p=o.getRangeAt(0).cloneRange()).collapse(!0),p.setStart(o.focusNode,0),i=(e=p.toString().slice(0,p.endOffset)).split(c.pattern).length-1,(n=e.match(c.pattern))&&(s=e.slice(e.lastIndexOf(n[n.length-1]))),s){if(this.state.actions.ArrowLeft=!1,this.state.tag={prefix:s.match(c.pattern)[0],value:s.replace(c.pattern,"")},this.state.tag.baseOffset=o.baseOffset-this.state.tag.value.length,l=this.state.tag.value.match(c.delimiters))return this.state.tag.value=this.state.tag.value.replace(c.delimiters,""),this.state.tag.delimiters=l[0],this.addTags(this.state.tag.value,c.dropdown.clearOnSelect),void this.dropdown.hide();a=this.state.tag.value.length>=c.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||i500||!e.focusable)?this.state.dropdown.visible?this.dropdown.hide():0===e.dropdown.enabled&&"mix"!=e.mode&&this.dropdown.show(this.value.length?"":void 0):"select"!=e.mode||0!==e.dropdown.enabled||this.state.dropdown.visible||(this.events.callbacks.onDoubleClickScope.call(this,function(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n.push.apply(n,i)}return n}(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t}(function(t){for(var e=1;e=this.settings.dropdown.enabled&&(this.state.editing&&(this.state.editing.value=o),this.dropdown.show(o)),this.trigger("edit:input",{tag:i,index:s,data:ht({},this.value[s],{newValue:o}),event:e})},onEditTagPaste:function(t,e){var n=(e.clipboardData||window.clipboardData).getData("Text");e.preventDefault();var i=bt(n);this.setRangeAtStartEnd(!1,i)},onEditTagClick:function(t,e){this.events.callbacks.onClickScope.call(this,e)},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t,e){var n=vt.call(this,e.relatedTarget);if("select"==this.settings.mode&&n&&e.relatedTarget.contains(e.target))this.dropdown.hide();else if(this.state.editing&&(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(document.activeElement)||this.trigger("blur",{}),this.DOM.scope.contains(t))){var i,s,a,o=this.settings,r=t.closest("."+o.classNames.tag),l=Tt(r),d=this.input.normalize.call(this,t),c=(qt(i={},o.tagTextProp,d),qt(i,"__tagId",l.__tagId),i),u=l.__originalData,h=this.editTagChangeDetected(ht(l,c)),g=this.validateTag(c);if(d)if(h){var p;if(s=this.hasMaxTags(),a=ht({},u,(qt(p={},o.tagTextProp,this.trim(d)),qt(p,"__isValid",g),p)),o.transformTag.call(this,a,u),!0!==(g=(!s||!0===u.__isValid)&&this.validateTag(a))){if(this.trigger("invalid",{data:a,tag:r,message:g}),o.editTags.keepInvalid)return;o.keepInvalidTags?a.__isValid=g:a=u}else o.keepInvalidTags&&(delete a.title,delete a["aria-invalid"],delete a.class);this.onEditTagDone(r,a)}else this.onEditTagDone(r,u);else this.onEditTagDone(r)}},onEditTagkeydown:function(t,e){if(!this.state.composing)switch(this.trigger("edit:keydown",{event:t}),t.key){case"Esc":case"Escape":this.state.editing=!1,e.__tagifyTagData.__originalData.value?e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML,e):e.remove();break;case"Enter":case"Tab":t.preventDefault(),setTimeout((function(){return t.target.blur()}),0)}},onDoubleClickScope:function(t){var e=t.target.closest("."+this.settings.classNames.tag);if(e){var n,i,s=Tt(e),a=this.settings;!1!==(null==s?void 0:s.editable)&&(n=e.classList.contains(this.settings.classNames.tagEditing),i=e.hasAttribute("readonly"),a.readonly||n||i||!this.settings.editTags||!a.userInput||(this.events.callbacks.onEditTagFocus.call(this,e),this.editTag(e)),this.toggleFocusClass(!0),"select"!=a.mode&&this.trigger("dblclick",{tag:e,index:this.getNodeIndex(e),data:Tt(e)}))}},onInputDOMChange:function(t){var e=this;t.forEach((function(t){t.addedNodes.forEach((function(t){if("

"==t.outerHTML)t.replaceWith(document.createElement("br"));else if(1==t.nodeType&&t.querySelector(e.settings.classNames.tagSelector)){var n,i=document.createTextNode("");3==t.childNodes[0].nodeType&&"BR"!=t.previousSibling.nodeName&&(i=document.createTextNode("\n")),(n=t).replaceWith.apply(n,Rt([i].concat(Rt(Rt(t.childNodes).slice(0,-1))))),St(i)}else if(vt.call(e,t)){var s;if(3!=(null===(s=t.previousSibling)||void 0===s?void 0:s.nodeType)||t.previousSibling.textContent||t.previousSibling.remove(),t.previousSibling&&"BR"==t.previousSibling.nodeName){t.previousSibling.replaceWith("\n​");for(var a=t.nextSibling,o="";a;)o+=a.textContent,a=a.nextSibling;o.trim()&&St(t.previousSibling)}else t.previousSibling&&!Tt(t.previousSibling)||t.before("​")}})),t.removedNodes.forEach((function(t){t&&"BR"==t.nodeName&&vt.call(e,n)&&(e.removeTags(n),e.fixFirefoxLastTagNoCaret())}))}));var n=this.DOM.input.lastChild;n&&""==n.nodeValue&&n.remove(),n&&"BR"==n.nodeName||this.DOM.input.appendChild(document.createElement("br"))}}};function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.map((t=>t.value)),dropdown:{enabled:e.dropdownSuggestionsStartAfter,maxItems:e.dropdownMaxItems,closeOnSelect:e.dropdownCloseOnSelect,highlightFirst:e.highlight},transformTag(t){t.display||(t.display=t.value,t.value=encodeURIComponent(t.value)),t.display=t.display.replace(//g,">")},templates:{wrapper(t,e){return`
\n ${this.settings.templates.input.call(this)}\n ​\n
`},tag:t=>`
\n \n
\n ${t.display}\n
\n
`,dropdownItem:t=>`
\n ${t.display}\n
`}}}(e.id,n));o.addTags(i),void 0!==s&&o.on("input",(t=>{!function(t,e,n,i,s,a){Qt instanceof AbortController&&Qt.abort(),Qt=new AbortController,t.whitelist=null,void 0!==Gt&&(t.DOM.scope.ownerDocument.defaultView.clearTimeout(Gt),Gt=void 0),s.detail.value.length{const e=s.detail.value;n.writeParameter(i,e),t.loading(!0),fetch(n.getUrl().toString(),{signal:Qt.signal}).then((t=>t.json())).catch((()=>{})).then((n=>{t.whitelist=n,t.loading(!1).dropdown.show(e)}))}),a))}(o,n.suggestionStarts,s,a,t,n.autocompleteTriggerTimeout)}))}Jt.prototype={_dropdown:Lt,placeCaretAfterNode:St,getSetTagData:Tt,helpers:{sameStr:at,removeCollectionProp:ot,omit:rt,isObject:ut,parseHTML:lt,escapeHTML:ct,extend:ht,concatWithoutDups:gt,getUID:mt,isNodeTag:vt},customEventsList:["change","add","remove","invalid","input","paste","click","keydown","focus","blur","edit:input","edit:beforeUpdate","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select","dropdown:updated","dropdown:noMatch","dropdown:scroll"],dataProps:["__isValid","__removed","__originalData","__originalHTML","__tagId"],trim:function(t){return this.settings.trim&&t&&"string"==typeof t?t.trim():t},parseHTML:lt,templates:Bt,parseTemplate:function(t,e){return lt((t=this.settings.templates[t]||t).apply(this,e))},set whitelist(t){var e=t&&Array.isArray(t);this.settings.whitelist=e?t:[],this.setPersistedData(e?t:[],"whitelist")},get whitelist(){return this.settings.whitelist},set userInput(t){this.settings.userInput=!!t,this.setContentEditable(!!t)},get userInput(){return this.settings.userInput},generateClassSelectors:function(t){var e=function(e){var n=e;Object.defineProperty(t,n+"Selector",{get:function(){return"."+this[n].split(" ")[0]}})};for(var n in t)e(n)},applySettings:function(t,e){var n,i;xt.templates=this.templates;var s=ht({},xt,"mix"==e.mode?{dropdown:{position:"text"}}:{}),a=this.settings=ht({},s,e);if(a.disabled=t.hasAttribute("disabled"),a.readonly=a.readonly||t.hasAttribute("readonly"),a.placeholder=ct(t.getAttribute("placeholder")||a.placeholder||""),a.required=t.hasAttribute("required"),this.generateClassSelectors(a.classNames),this.isIE&&(a.autoComplete=!1),["whitelist","blacklist"].forEach((function(e){var n=t.getAttribute("data-"+e);n&&zt(n=n.split(a.delimiters),Array)&&(a[e]=n)})),"autoComplete"in e&&!ut(e.autoComplete)&&(a.autoComplete=xt.autoComplete,a.autoComplete.enabled=e.autoComplete),"mix"==a.mode&&(a.pattern=a.pattern||/@/,a.autoComplete.rightKey=!0,a.delimiters=e.delimiters||null,a.tagTextProp&&!a.dropdown.searchKeys.includes(a.tagTextProp)&&a.dropdown.searchKeys.push(a.tagTextProp)),t.pattern)try{a.pattern=new RegExp(t.pattern)}catch(t){}if(a.delimiters){a._delimiters=a.delimiters;try{a.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}}a.disabled&&(a.userInput=!1),this.TEXTS=Kt({},Pt,a.texts||{}),"select"==a.mode&&(a.dropdown.includeSelectedTags=!0),("select"!=a.mode||(null===(n=e.dropdown)||void 0===n?void 0:n.enabled))&&a.userInput||(a.dropdown.enabled=0),a.dropdown.appendTarget=(null===(i=e.dropdown)||void 0===i?void 0:i.appendTarget)||document.body,void 0===a.dropdown.includeSelectedTags&&(a.dropdown.includeSelectedTags=a.duplicates);var o=this.getPersistedData("whitelist");Array.isArray(o)&&(this.whitelist=Array.isArray(a.whitelist)?gt(a.whitelist,o):o)},getAttributes:function(t){var e,n=this.getCustomAttributes(t),i="";for(e in n)i+=" "+e+(void 0!==t[e]?'="'.concat(n[e],'"'):"");return i},getCustomAttributes:function(t){if(!ut(t))return"";var e,n={};for(e in t)"__"!=e.slice(0,2)&&"class"!=e&&t.hasOwnProperty(e)&&void 0!==t[e]&&(n[e]=ct(t[e]));return n},setStateSelection:function(){var t=window.getSelection(),e={anchorOffset:t.anchorOffset,anchorNode:t.anchorNode,range:t.getRangeAt&&t.rangeCount&&t.getRangeAt(0)};return this.state.selection=e,e},getCSSVars:function(){var t,e,n=getComputedStyle(this.DOM.scope,null);this.CSSVars={tagHideTransition:(t=function(t){if(!t)return{};var e=(t=t.trim().split(" ")[0]).split(/\d+/g).filter((function(t){return t})).pop().trim();return{value:+t.split(e).filter((function(t){return t}))[0].trim(),unit:e}}(("tag-hide-transition",n.getPropertyValue("--tag-hide-transition"))),e=t.value,"s"==t.unit?1e3*e:e)}},build:function(t){var e=this.DOM,n=t.closest("label");this.settings.mixMode.integrated?(e.originalInput=null,e.scope=t,e.input=t):(e.originalInput=t,e.originalInput_tabIndex=t.tabIndex,e.scope=this.parseTemplate("wrapper",[t,this.settings]),e.input=e.scope.querySelector(this.settings.classNames.inputSelector),t.parentNode.insertBefore(e.scope,t),t.tabIndex=-1),n&&n.setAttribute("for","")},destroy:function(){var t;this.events.unbindGlobal.call(this),null===(t=this.DOM.scope.parentNode)||void 0===t||t.removeChild(this.DOM.scope),this.DOM.originalInput.tabIndex=this.DOM.originalInput_tabIndex,delete this.DOM.originalInput.__tagify,this.dropdown.hide(!0),this.removeAllCustomListeners(),clearTimeout(this.dropdownHide__bindEventsTimeout),clearInterval(this.listeners.main.originalInputValueObserverInterval)},loadOriginalValues:function(t){var e,n=this.settings;if(this.state.blockChangeEvent=!0,void 0===t){var i=this.getPersistedData("value");t=i&&!this.DOM.originalInput.value?i:n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value}if(this.removeAllTags(),t)if("mix"==n.mode)this.parseMixTags(t),(e=this.DOM.input.lastChild)&&"BR"==e.tagName||this.DOM.input.insertAdjacentHTML("beforeend","
");else{try{zt(JSON.parse(t),Array)&&(t=JSON.parse(t))}catch(t){}this.addTags(t,!0).forEach((function(t){return t&&t.classList.add(n.classNames.tagNoAnimation)}))}else this.postUpdate();this.state.lastOriginalValueReported=n.mixMode.integrated?"":this.DOM.originalInput.value},cloneEvent:function(t){var e={};for(var n in t)"path"!=n&&(e[n]=t[n]);return e},loading:function(t){return this.state.isLoading=t,this.DOM.scope.classList[t?"add":"remove"](this.settings.classNames.scopeLoading),this},tagLoading:function(t,e){return t&&t.classList[e?"add":"remove"](this.settings.classNames.tagLoading),this},toggleClass:function(t,e){"string"==typeof t&&this.DOM.scope.classList.toggle(t,e)},toggleScopeValidation:function(t){var e=!0===t||void 0===t;!this.settings.required&&t&&t===this.TEXTS.empty&&(e=!0),this.toggleClass(this.settings.classNames.tagInvalid,!e),this.DOM.scope.title=e?"":t},toggleFocusClass:function(t){this.toggleClass(this.settings.classNames.focus,!!t)},setPlaceholder:function(t){var e=this;["data","aria"].forEach((function(n){return e.DOM.input.setAttribute("".concat(n,"-placeholder"),t)}))},triggerChangeEvent:function(){if(!this.settings.mixMode.integrated){var t=this.DOM.originalInput,e=this.state.lastOriginalValueReported!==t.value,n=new CustomEvent("change",{bubbles:!0});e&&(this.state.lastOriginalValueReported=t.value,n.simulated=!0,t._valueTracker&&t._valueTracker.setValue(Math.random()),t.dispatchEvent(n),this.trigger("change",this.state.lastOriginalValueReported),t.value=this.state.lastOriginalValueReported)}},events:$t,fixFirefoxLastTagNoCaret:function(){},setRangeAtStartEnd:function(t,e){if(e){t="number"==typeof t?t:!!t,e=e.lastChild||e;var n=document.getSelection();if(zt(n.focusNode,Element)&&!this.DOM.input.contains(n.focusNode))return!0;try{n.rangeCount>=1&&["Start","End"].forEach((function(i){return n.getRangeAt(0)["set"+i](e,t||e.length)}))}catch(t){console.warn(t)}}},insertAfterTag:function(t,e){if(e=e||this.settings.mixMode.insertAfterTag,t&&t.parentNode&&e)return e="string"==typeof e?document.createTextNode(e):e,t.parentNode.insertBefore(e,t.nextSibling),e},editTagChangeDetected:function(t){var e=t.__originalData;for(var n in e)if(!this.dataProps.includes(n)&&t[n]!=e[n])return!0;return!1},getTagTextNode:function(t){return t.querySelector(this.settings.classNames.tagTextSelector)},setTagTextNode:function(t,e){this.getTagTextNode(t).innerHTML=ct(e)},editTag:function(t,e){var n=this;t=t||this.getLastTag(),e=e||{};var i=this.settings,s=this.getTagTextNode(t),a=this.getNodeIndex(t),o=Tt(t),r=this.events.callbacks,l=!0,d="select"==i.mode;if(!d&&this.dropdown.hide(),s){if(!zt(o,Object)||!("editable"in o)||o.editable)return o=Tt(t,{__originalData:ht({},o),__originalHTML:t.cloneNode(!0)}),Tt(o.__originalHTML,o.__originalData),s.setAttribute("contenteditable",!0),t.classList.add(i.classNames.tagEditing),this.events.callbacks.onEditTagFocus.call(this,t),s.addEventListener("click",r.onEditTagClick.bind(this,t)),s.addEventListener("blur",r.onEditTagBlur.bind(this,this.getTagTextNode(t))),s.addEventListener("input",r.onEditTagInput.bind(this,s)),s.addEventListener("paste",r.onEditTagPaste.bind(this,s)),s.addEventListener("keydown",(function(e){return r.onEditTagkeydown.call(n,e,t)})),s.addEventListener("compositionstart",r.onCompositionStart.bind(this)),s.addEventListener("compositionend",r.onCompositionEnd.bind(this)),e.skipValidation||(l=this.editTagToggleValidity(t)),s.originalIsValid=l,this.trigger("edit:start",{tag:t,index:a,data:o,isValid:l}),s.focus(),!d&&this.setRangeAtStartEnd(!1,s),0===i.dropdown.enabled&&!d&&this.dropdown.show(),this.state.hasFocus=!0,this}else st.warn("Cannot find element in Tag template: .",i.classNames.tagTextSelector)},editTagToggleValidity:function(t,e){var n;if(e=e||Tt(t))return(n=!("__isValid"in e)||!0===e.__isValid)||this.removeTagsFromValue(t),this.update(),t.classList.toggle(this.settings.classNames.tagNotAllowed,!n),e.__isValid=n,e.__isValid;st.warn("tag has no data: ",t,e)},onEditTagDone:function(t,e){t=t||this.state.editing.scope,e=e||{};var n,i,s=this.settings,a={tag:t,index:this.getNodeIndex(t),previousData:Tt(t),data:e};this.trigger("edit:beforeUpdate",a,{cloneData:!1}),this.state.editing=!1,delete e.__originalData,delete e.__originalHTML,t&&t.parentNode&&((void 0!==(i=e[s.tagTextProp])?null===(n=(i+="").trim)||void 0===n?void 0:n.call(i):s.tagTextProp in e?void 0:e.value)?(t=this.replaceTag(t,e),this.editTagToggleValidity(t,e),s.a11y.focusableTags?t.focus():"select"!=s.mode&&St(t)):this.removeTags(t)),this.trigger("edit:updated",a),s.dropdown.closeOnSelect&&this.dropdown.hide(),this.settings.keepInvalidTags&&this.reCheckInvalidTags()},replaceTag:function(t,e){e&&""!==e.value&&void 0!==e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&ht(e,this.getInvalidTagAttrs(e,e.__isValid));var n=this.createTagElem(e);return t.parentNode.replaceChild(n,t),this.updateValueByDOMTags(),n},updateValueByDOMTags:function(){var t=this;this.value.length=0;var e=this.settings.classNames,n=[e.tagNotAllowed.split(" ")[0],e.tagHide];[].forEach.call(this.getTagElms(),(function(e){Xt(e.classList).some((function(t){return n.includes(t)}))||t.value.push(Tt(e))})),this.update(),this.dropdown.refilter()},injectAtCaret:function(t,e){var n;if(e=e||(null===(n=this.state.selection)||void 0===n?void 0:n.range),"string"==typeof t&&(t=document.createTextNode(t)),!e&&t)return this.appendMixTags(t),this;var i=bt(t,e);return this.setRangeAtStartEnd(!1,i),this.updateValueByDOMTags(),this.update(),this},input:{set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.settings,i=n.dropdown.closeOnSelect;this.state.inputText=t,e&&(this.DOM.input.innerHTML=ct(""+t),t&&this.toggleClass(n.classNames.empty,!this.DOM.input.innerHTML)),!t&&i&&this.dropdown.hide.bind(this),this.input.autocomplete.suggest.call(this),this.input.validate.call(this)},raw:function(){return this.DOM.input.textContent},validate:function(){var t=!this.state.inputText||!0===this.validateTag({value:this.state.inputText});return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid,!t),t},normalize:function(t,e){var n=t||this.DOM.input,i=[];n.childNodes.forEach((function(t){return 3==t.nodeType&&i.push(t.nodeValue)})),i=i.join("\n");try{i=i.replace(/(?:\r\n|\r|\n)/g,this.settings.delimiters.source.charAt(0))}catch(t){}return i=i.replace(/\s/g," "),(null==e?void 0:e.trim)?this.trim(i):i},autocomplete:{suggest:function(t){if(this.settings.autoComplete.enabled){"object"!=typeof(t=t||{value:""})&&(t={value:t});var e=this.dropdown.getMappedValue(t);if("number"!=typeof e){var n=this.state.inputText.toLowerCase(),i=e.substr(0,this.state.inputText.length).toLowerCase(),s=e.substring(this.state.inputText.length);e&&this.state.inputText&&i==n?(this.DOM.input.setAttribute("data-suggest",s),this.state.inputSuggestion=t):(this.DOM.input.removeAttribute("data-suggest"),delete this.state.inputSuggestion)}}},set:function(t){var e=this.DOM.input.getAttribute("data-suggest"),n=t||(e?this.state.inputText+e:null);return!!n&&("mix"==this.settings.mode?this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix+n)):(this.input.set.call(this,n),this.setRangeAtStartEnd(!1,this.DOM.input)),this.input.autocomplete.suggest.call(this),this.dropdown.hide(),!0)}}},getTagIdx:function(t){return this.value.findIndex((function(e){return e.__tagId==(t||{}).__tagId}))},getNodeIndex:function(t){var e=0;if(t)for(;t=t.previousElementSibling;)e++;return e},getTagElms:function(){for(var t=arguments.length,e=new Array(t),n=0;n=this.settings.maxTags&&this.TEXTS.exceed},setReadonly:function(t,e){var n=this.settings;this.DOM.scope.contains(document.activeElement)&&document.activeElement.blur(),n[e||"readonly"]=t,this.DOM.scope[(t?"set":"remove")+"Attribute"](e||"readonly",!0),this.settings.userInput=!0,this.setContentEditable(!t)},setContentEditable:function(t){this.DOM.input.contentEditable=t,this.DOM.input.tabIndex=t?0:-1},setDisabled:function(t){this.setReadonly(t,"disabled")},normalizeTags:function(t){var e=this,n=this.settings,i=n.whitelist,s=n.delimiters,a=n.mode,o=n.tagTextProp,r=[],l=!!i&&zt(i[0],Object),d=Array.isArray(t),c=d&&t[0].value,u=function(t){return(t+"").split(s).reduce((function(t,n){var i,s=e.trim(n);return s&&t.push((Wt(i={},o,s),Wt(i,"value",s),i)),t}),[])};if("number"==typeof t&&(t=t.toString()),"string"==typeof t){if(!t.trim())return[];t=u(t)}else d&&(t=t.reduce((function(t,n){if(ut(n)){var i=ht({},n);o in i||(o="value"),i[o]=e.trim(i[o]),(i[o]||0===i[o])&&t.push(i)}else if(null!=n&&""!==n&&void 0!==n){var s;(s=t).push.apply(s,Xt(u(n)))}return t}),[]));return l&&!c&&(t.forEach((function(t){var n=r.map((function(t){return t.value})),i=e.dropdown.filterListItems.call(e,t[o],{exact:!0});e.settings.duplicates||(i=i.filter((function(t){return!n.includes(t.value)})));var s=i.length>1?e.getWhitelistItem(t[o],o,i):i[0];s&&zt(s,Object)?r.push(s):"mix"!=a&&(null==t.value&&(t.value=t[o]),r.push(t))})),r.length&&(t=r)),t},parseMixTags:function(t){var e=this,n=this.settings,i=n.mixTagsInterpolator,s=n.duplicates,a=n.transformTag,o=n.enforceWhitelist,r=n.maxTags,l=n.tagTextProp,d=[];t=t.split(i[0]).map((function(t,n){var c,u,h,g=t.split(i[1]),p=g[0],f=d.length==r;try{if(p==+p)throw Error;u=JSON.parse(p)}catch(t){u=e.normalizeTags(p)[0]||{value:p}}if(a.call(e,u),f||!(g.length>1)||o&&!e.isTagWhitelisted(u.value)||!s&&e.isTagDuplicate(u.value)){if(t)return n?i[0]+t:t}else u[c=u[l]?l:"value"]=e.trim(u[c]),h=e.createTagElem(u),d.push(u),h.classList.add(e.settings.classNames.tagNoAnimation),g[0]=h.outerHTML,e.value.push(u);return g.join("")})).join(""),this.DOM.input.innerHTML=t,this.DOM.input.appendChild(document.createTextNode("")),this.DOM.input.normalize();var c=this.getTagElms();return c.forEach((function(t,e){return Tt(t,d[e])})),this.update({withoutChangeEvent:!0}),Et(c,this.state.hasFocus),t},replaceTextWithNode:function(t,e){if(this.state.tag||e){e=e||this.state.tag.prefix+this.state.tag.value;var n,i,s=this.state.selection||window.getSelection(),a=s.anchorNode,o=this.state.tag.delimiters?this.state.tag.delimiters.length:0;return a.splitText(s.anchorOffset-o),-1==(n=a.nodeValue.lastIndexOf(e))||(i=a.splitText(n),t&&a.parentNode.replaceChild(t,i)),!0}},prepareNewTagNode:function(t,e){e=e||{};var n=this.settings,i=[],s={},a=Object.assign({},t,{value:t.value+""});if(t=Object.assign({},a),n.transformTag.call(this,t),t.__isValid=this.hasMaxTags()||this.validateTag(t),!0!==t.__isValid){if(e.skipInvalid)return;if(ht(s,this.getInvalidTagAttrs(t,t.__isValid),{__preInvalidData:a}),t.__isValid==this.TEXTS.duplicate&&this.flashTag(this.getTagElmByValue(t.value)),!n.createInvalidTags)return void i.push(t.value)}return"readonly"in t&&(t.readonly?s["aria-readonly"]=!0:delete t.readonly),{tagElm:this.createTagElem(t,s),tagData:t,aggregatedInvalidInput:i}},postProcessNewTagNode:function(t,e){var n=this,i=this.settings,s=e.__isValid;s&&!0===s?this.value.push(e):(this.trigger("invalid",{data:e,index:this.value.length,tag:t,message:s}),i.keepInvalidTags||setTimeout((function(){return n.removeTags(t,!0)}),1e3)),this.dropdown.position()},selectTag:function(t,e){var n=this;if(!this.settings.enforceWhitelist||this.isTagWhitelisted(e.value)){this.state.actions.selectOption&&setTimeout((function(){return n.setRangeAtStartEnd(!1,n.DOM.input)}));var i=this.getLastTag();return i?this.replaceTag(i,e):this.appendTag(t),this.value[0]=e,this.update(),this.trigger("add",{tag:t,data:e}),[t]}},addEmptyTag:function(t){var e=ht({value:""},t||{}),n=this.createTagElem(e);Tt(n,e),this.appendTag(n),this.editTag(n,{skipValidation:!0}),this.toggleFocusClass(!0)},addTags:function(t,e,n){var i=this,s=[],a=this.settings,o=[],r=document.createDocumentFragment(),l=[];if(!t||0==t.length)return s;switch(t=this.normalizeTags(t),a.mode){case"mix":return this.addMixTags(t);case"select":e=!1,this.removeAllTags()}return this.DOM.input.removeAttribute("style"),t.forEach((function(t){var e=i.prepareNewTagNode(t,{skipInvalid:n||a.skipInvalid});if(e){var d=e.tagElm;if(t=e.tagData,o=e.aggregatedInvalidInput,s.push(d),"select"==a.mode)return i.selectTag(d,t);r.appendChild(d),i.postProcessNewTagNode(d,t),l.push({tagElm:d,tagData:t})}})),this.appendTag(r),l.forEach((function(t){var e=t.tagElm,n=t.tagData;return i.trigger("add",{tag:e,index:i.getTagIdx(n),data:n})})),this.update(),t.length&&e&&(this.input.set.call(this,a.createInvalidTags?"":o.join(a._delimiters)),this.setRangeAtStartEnd(!1,this.DOM.input)),this.dropdown.refilter(),s},addMixTags:function(t){var e=this;if((t=this.normalizeTags(t))[0].prefix||this.state.tag)return this.prefixedTextToTag(t[0]);var n=document.createDocumentFragment();return t.forEach((function(t){var i=e.prepareNewTagNode(t);n.appendChild(i.tagElm),e.insertAfterTag(i.tagElm),e.postProcessNewTagNode(i.tagElm,i.tagData)})),this.appendMixTags(n),n.children},appendMixTags:function(t){var e=!!this.state.selection;e?this.injectAtCaret(t):(this.DOM.input.focus(),(e=this.setStateSelection()).range.setStart(this.DOM.input,e.range.endOffset),e.range.setEnd(this.DOM.input,e.range.endOffset),this.DOM.input.appendChild(t),this.updateValueByDOMTags(),this.update())},prefixedTextToTag:function(t){var e,n,i,s=this,a=this.settings,o=null===(e=this.state.tag)||void 0===e?void 0:e.delimiters;if(t.prefix=t.prefix||this.state.tag?this.state.tag.prefix:(a.pattern.source||a.pattern)[0],i=this.prepareNewTagNode(t),n=i.tagElm,this.replaceTextWithNode(n)||this.DOM.input.appendChild(n),setTimeout((function(){return n.classList.add(s.settings.classNames.tagNoAnimation)}),300),this.update(),!o){var r=this.insertAfterTag(n)||n;setTimeout(St,0,r)}return this.state.tag=null,this.postProcessNewTagNode(n,i.tagData),n},appendTag:function(t){var e=this.DOM,n=e.input;e.scope.insertBefore(t,n)},createTagElem:function(t,e){t.__tagId=mt();var n,i=ht({},t,Kt({value:ct(t.value+"")},e));return function(t){for(var e,n=document.createNodeIterator(t,NodeFilter.SHOW_TEXT,null,!1);e=n.nextNode();)e.textContent.trim()||e.parentNode.removeChild(e)}(n=this.parseTemplate("tag",[i,this])),Tt(n,t),n},reCheckInvalidTags:function(){var t=this,e=this.settings;this.getTagElms(e.classNames.tagNotAllowed).forEach((function(n,i){var s=Tt(n),a=t.hasMaxTags(),o=t.validateTag(s),r=!0===o&&!a;if("select"==e.mode&&t.toggleScopeValidation(o),r)return s=s.__preInvalidData?s.__preInvalidData:{value:s.value},t.replaceTag(n,s);n.title=a||o}))},removeTags:function(t,e,n){var i,s=this,a=this.settings;if(t=t&&zt(t,HTMLElement)?[t]:zt(t,Array)?t:t?[t]:[this.getLastTag()].filter((function(t){return t})),i=t.reduce((function(t,e){e&&"string"==typeof e&&(e=s.getTagElmByValue(e));var n=Tt(e);return e&&n&&!n.readonly&&t.push({node:e,idx:s.getTagIdx(n),data:Tt(e,{__removed:!0})}),t}),[]),n="number"==typeof n?n:this.CSSVars.tagHideTransition,"select"==a.mode&&(n=0,this.input.set.call(this)),1==i.length&&"select"!=a.mode&&i[0].node.classList.contains(a.classNames.tagNotAllowed)&&(e=!0),i.length)return a.hooks.beforeRemoveTag(i,{tagify:this}).then((function(){var t=function(t){t.node.parentNode&&(t.node.parentNode.removeChild(t.node),e?a.keepInvalidTags&&this.trigger("remove",{tag:t.node,index:t.idx}):(this.trigger("remove",{tag:t.node,index:t.idx,data:t.data}),this.dropdown.refilter(),this.dropdown.position(),this.DOM.input.normalize(),a.keepInvalidTags&&this.reCheckInvalidTags()))};n&&n>10&&1==i.length?function(e){e.node.style.width=parseFloat(window.getComputedStyle(e.node).width)+"px",document.body.clientTop,e.node.classList.add(a.classNames.tagHide),setTimeout(t.bind(this),n,e)}.call(s,i[0]):i.forEach(t.bind(s)),e||(s.removeTagsFromValue(i.map((function(t){return t.node}))),s.update(),"select"==a.mode&&a.userInput&&s.setContentEditable(!0))})).catch((function(t){}))},removeTagsFromDOM:function(){this.getTagElms().forEach((function(t){return t.remove()}))},removeTagsFromValue:function(t){var e=this;(t=Array.isArray(t)?t:[t]).forEach((function(t){var n=Tt(t),i=e.getTagIdx(n);i>-1&&e.value.splice(i,1)}))},removeAllTags:function(t){var e=this;t=t||{},this.value=[],"mix"==this.settings.mode?this.DOM.input.innerHTML="":this.removeTagsFromDOM(),this.dropdown.refilter(),this.dropdown.position(),this.state.dropdown.visible&&setTimeout((function(){e.DOM.input.focus()})),"select"==this.settings.mode&&(this.input.set.call(this),this.settings.userInput&&this.setContentEditable(!0)),this.update(t)},postUpdate:function(){this.state.blockChangeEvent=!1;var t,e,n=this.settings,i=n.classNames,s="mix"==n.mode?n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value.trim():this.value.length+this.input.raw.call(this).length;this.toggleClass(i.hasMaxTags,this.value.length>=n.maxTags),this.toggleClass(i.hasNoTags,!this.value.length),this.toggleClass(i.empty,!s),"select"==n.mode&&this.toggleScopeValidation(null===(e=this.value)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.__isValid)},setOriginalInputValue:function(t){var e=this.DOM.originalInput;this.settings.mixMode.integrated||(e.value=t,e.tagifyValue=e.value,this.setPersistedData(t,"value"))},update:function(t){clearTimeout(this.debouncedUpdateTimeout),this.debouncedUpdateTimeout=setTimeout(function(){var e=this.getInputValue();this.setOriginalInputValue(e),this.settings.onChangeAfterBlur&&(t||{}).withoutChangeEvent||this.state.blockChangeEvent||this.triggerChangeEvent(),this.postUpdate()}.bind(this),100),this.events.bindOriginaInputListener.call(this,100)},getInputValue:function(){var t=this.getCleanValue();return"mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):""},getCleanValue:function(t){return ot(t||this.value,this.dataProps)},getMixedTagsAsString:function(){var t="",e=this,n=this.settings,i=n.originalInputValueFormat||JSON.stringify,s=n.mixTagsInterpolator;return function n(a){a.childNodes.forEach((function(a){if(1==a.nodeType){var o=Tt(a);if("BR"==a.tagName&&(t+="\r\n"),o&&vt.call(e,a)){if(o.__removed)return;t+=s[0]+i(rt(o,e.dataProps))+s[1]}else a.getAttribute("style")||["B","I","U"].includes(a.tagName)?t+=a.textContent:"DIV"!=a.tagName&&"P"!=a.tagName||(t+="\r\n",n(a))}else t+=a.textContent}))}(this.DOM.input),t}},Jt.prototype.removeTag=Jt.prototype.removeTags;const Zt="radio-field-input",te="multi-select-field-input";class ee{#U;#W;#z;#K;#X;#J;#Q;#G;#Y;#Z;#tt;#et;#nt;#it;#st;#at;#ot;#rt=null;#lt;#dt;#ct;#ut;#ht;#gt=null;#pt=null;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g,p,f,m,v,y){this.#U=t,this.#Z=o,this.#W=r,this.#z=l,this.#K=d,this.#X=c,this.#nt=u,this.#it=h,this.#st=g,this.#at=y,this.#lt=e,this.#dt=n,this.#ct=i,this.#ut=s,this.#ht=a,this.#ot=this.#at.innerHTML,this.#Y=p,this.#J=f,this.#Q=m,this.#G=v,this.#et=!1,this.#tt=!1,this.isAsync()&&(this.clearOptionElements(),this.loadOptionsDataSourceValues().then((()=>{this.#st.style.display="none"}))),this.#W.addEventListener("input",(t=>{this.isAsync()?this.handleOptionsDataSource(t.target).then((()=>{this.filterItemsSearch(t)})):this.filterItemsSearch(t)})),this.#Y.addEventListener("click",(()=>{this.setFiltered(!1)})),this.#J.addEventListener("click",(()=>{this.isAsync()&&(this.#W.value="",this.clearOptionElements()),this.toggleVisibility()})),"radio-field-input"===this.#z&&this.#X.forEach((t=>{t.addEventListener("change",(()=>{this.scrollListToTop()}))}))}isAsync(){return null!==this.#lt&&void 0!==this.#lt}isEngaged(){return this.#et}isFiltered(){return this.#tt}setFiltered(t){this.#tt!==t&&(this.#tt=t,t?(this.#Y.style.removeProperty("display"),this.#at.style.removeProperty("display")):(this.#W.value="",this.#Y.style.display="none",this.#at.style.display="none",this.#nt.style.display="none",this.#ft()))}toggleVisibility(){this.isEngaged()?(this.#et=!1,this.#U.classList.remove("engaged"),this.setFiltered(!1),this.#J.setAttribute("aria-expanded","false"),this.#Q.style.removeProperty("display"),this.#G.style.display="none",this.#it.classList.add("hidden")):(this.#et=!0,this.#U.classList.add("engaged"),this.#J.setAttribute("aria-expanded","true"),this.#Q.style.display="none",this.#G.style.removeProperty("display"),this.isAsync()&&this.#it.classList.remove("hidden"))}#mt(t){this.#U.ownerDocument.defaultView.clearTimeout(this.#rt),this.#rt=this.#U.ownerDocument.defaultView.setTimeout((()=>{this.#at.textContent="",this.#U.ownerDocument.defaultView.requestAnimationFrame((()=>{this.#at.textContent=t}))}),500)}#vt(t){const e=$(this.#ot,t);this.#mt(e)}loadOptionsDataSourceValues(){return new Promise(((t,e)=>{"string"==typeof this.#ht||this.#ht instanceof String||this.#ht instanceof Array?this.fetchDataSource(new Map([[this.#ct,this.#ht]])).then((n=>{n&&n instanceof Array?(n.forEach((t=>{this.#K.append(this.optionsDataSourceDataToElement(t,!0))})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),t()):e()})):t()})).catch((t=>{if(t instanceof Error)throw t}))}handleOptionsDataSource(t){return this.#pt instanceof AbortController&&this.#pt.abort(),this.#pt=new AbortController,void 0!==this.#gt&&(clearTimeout(this.#gt),this.#gt=void 0),new Promise(((e,n)=>{if(t.value.length{const i=t.value;return this.fetchDataSource(new Map([[this.#dt,i]]),this.#pt.signal).then((t=>{t&&t instanceof Array?(this.clearOptionElements(),t.forEach((t=>{const e=this.optionsDataSourceDataToElement(t);this.#K.querySelector(`[data-value='${e.dataset.value}'][data-display='${e.dataset.display}']`)||this.#K.append(e)})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),e(),this.#st.style.display="none"):n(new Error("Invalid data received from data source fetch"))}))}),200)})).catch((t=>{if(t instanceof Error)throw t}))}fetchDataSource(t,e=null){const n=new URL(this.#lt,document.location);t.forEach(((t,e)=>{t instanceof Array?t.forEach((t=>{n.searchParams.append(`${e}[]`,t)})):n.searchParams.set(e,t)}));const i={};return e instanceof AbortController&&(i.signal=e.signal),fetch(n,i).then((t=>t.json())).catch((()=>{}))}clearOptionElements(t=!1){Array.from(this.#K.children).forEach((e=>{if(t)this.#K.removeChild(e);else{const t=e.querySelector("input");t&&t.checked||this.#K.removeChild(e)}})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item")}optionsDataSourceDataToElement(t,e=!1){const n=Math.random().toString(16).slice(2),i=document.createElement("input");i.id=n,i.value=t.value;const s=document.createElement("label");let a;switch(s.htmlFor=n,this.#z){case Zt:a=document.createElement("div"),a.className="c-field-radio__item c-field--has-option-filter__item",i.type="radio",i.name=this.#U.dataset.ilUiInputName,s.innerText=t.display,a.append(i),a.append(s);break;case te:a=document.createElement("li"),a.className="c-field--has-option-filter__item",i.type="checkbox",i.name=`${this.#U.dataset.ilUiInputName}[]`;const e=document.createElement("span");e.className="c-field-multiselect__label-text",e.innerText=t.display,s.append(i),s.append(e),a.append(s);break;default:throw new Error(`Unsupported list type '${this.#z}' received`)}return i.checked=e,a.dataset.value=t.value,a.dataset.display=t.display,a.dataset.searchBy=t.searchBy,a}filterItemsSearch(t){const e=t.target.value.toLowerCase();this.setFiltered(!!e);let n=0,i=!1;this.#X.forEach((t=>{t.textContent.toLowerCase().includes(e)?(n+=1,i=!0,ne(t)):function(t){t.style.display="none"}(t)})),this.#vt(n.toString()),""!==e&&!1===i?this.#nt.style.removeProperty("display"):(""===e||i)&&(this.#nt.style.display="none")}#ft(){this.#X.forEach((t=>ne(t)))}scrollListToTop(){this.#Z.scrollTo({top:0,behavior:"smooth"})}}function ne(t){t.style.removeProperty("display")}class ie{#V=new Map;init(t,e,n,i,s,a){if(void 0===t)throw new TypeError("During init of an InputHasOptionFilter an undefined element was passed to the factory.");if(this.#V.has(t.id))throw new Error(`A InputHasOptionFilter with id '${t.id}' has already been initialized.`);const o=t,r=o.querySelector(".c-input--has-option-filter__field"),l=o.querySelector(".c-input--has-option-filter__search-input input"),d=o.getAttribute("data-il-ui-component"),c=o.querySelector(".c-field--has-option-filter__list"),u=c.querySelectorAll(".c-field--has-option-filter__item"),h=o.querySelector(".message-no-match"),g=o.querySelector(".message-async-start-search"),p=o.querySelector('.c-input--has-option-filter__synopsis [role="status"]'),f=o.querySelector(".c-input--has-option-filter__loader"),m=o.querySelector(".c-input--has-option-filter__clear-search"),v=o.querySelector(".c-input--has-option-filter__visibility-toggle"),y=v.querySelector(".text-expand"),w=v.querySelector(".text-collapse"),b=new ee(t,""===e?null:e,n,i,s,JSON.parse(a),r,l,d,c,u,h,g,f,m,v,y,w,p);return this.#V.set(t.id,b),b}get(t){return this.#V.has(t)?this.#V.get(t):null}}var se;e.UI=e.UI||{},e.UI.Input=e.UI.Input||{},(se=e.UI.Input).textarea=new o,se.mustacheVariables={init:(t,e)=>function(t,e){e.querySelectorAll(".c-input--has-mustache-variables__definitions > li > a").forEach((e=>{const n=function(t){const e=t.textContent.match(/^\s*\{\{([^}]+)\}\}\s*$/);return e?e[1].trim():null}(e);e.addEventListener("click",(()=>{t.insertCharactersAroundSelection(`{{${n}}}`,"")}))}))}(t,e)},se.markdown=new y,se.optionFilter=new ie,se.treeSelect=new Z(new tt(t),e.UI.menu.drilldown,{txt:t=>e.Language.txt(t)},n),se.tagInput=se.tag||{},se.tagInput.init=(t,e,n,i,s)=>Yt(Jt,t,e,n,i,s)}($,il,document); + */var et="​";function nt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n/g,">").replace(/"/g,""").replace(/`|'/g,"'"):t}function ut(t){var e=Object.prototype.toString.call(t).split(" ")[1].slice(0,-1);return t===Object(t)&&"Array"!=e&&"Function"!=e&&"RegExp"!=e&&"HTMLUnknownElement"!=e}function ht(t,e,n){var i,s;function a(t,e){for(var n in e)if(e.hasOwnProperty(n)){if(ut(e[n])){ut(t[n])?a(t[n],e[n]):t[n]=Object.assign({},e[n]);continue}if(Array.isArray(e[n])){t[n]=Object.assign([],e[n]);continue}t[n]=e[n]}}return i=t,(null!=(s=Object)&&"undefined"!=typeof Symbol&&s[Symbol.hasInstance]?s[Symbol.hasInstance](i):i instanceof s)||(t={}),a(t,e),n&&a(t,n),t}function gt(){var t=[],e={},n=!0,i=!1,s=void 0;try{for(var a,o=arguments[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var r=a.value,l=!0,d=!1,c=void 0;try{for(var u,h=r[Symbol.iterator]();!(l=(u=h.next()).done);l=!0){var g=u.value;ut(g)?e[g.value]||(t.push(g),e[g.value]=1):t.includes(g)||t.push(g)}}catch(t){d=!0,c=t}finally{try{l||null==h.return||h.return()}finally{if(d)throw c}}}}catch(t){i=!0,s=t}finally{try{n||null==o.return||o.return()}finally{if(i)throw s}}return t}function pt(t){return String.prototype.normalize?"string"==typeof t?t.normalize("NFD").replace(/[\u0300-\u036f]/g,""):void 0:t}var ft=function(){return/(?=.*chrome)(?=.*android)/i.test(navigator.userAgent)};function mt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^crypto.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function vt(t){var e;return wt.call(this,t)&&(null==t||null===(e=t.classList)||void 0===e?void 0:e.contains(this.settings.classNames.tag))}function yt(t){return wt.call(this,t)&&(null==t?void 0:t.closest(this.settings.classNames.tagSelector))}function wt(t){var e;return(null==t||null===(e=t.closest)||void 0===e?void 0:e.call(t,this.settings.classNames.namespaceSelector))===this.DOM.scope}function bt(t,e){var n=window.getSelection();return e=e||n.getRangeAt(0),"string"==typeof t&&(t=document.createTextNode(t)),e&&(e.deleteContents(),e.insertNode(t)),t}function Tt(t,e,n){return t?(e&&(t.__tagifyTagData=n?e:ht({},t.__tagifyTagData||{},e)),t.__tagifyTagData):(st.warn("tag element doesn't exist",{tagElm:t,data:e}),e)}function St(t){if(t&&t.parentNode){var e=t,n=window.getSelection(),i=n.getRangeAt(0);n.rangeCount&&(i.setStartAfter(e),i.collapse(!0),n.removeAllRanges(),n.addRange(i))}}function Et(t,e){t.forEach((function(t){if(Tt(t.previousSibling)||!t.previousSibling){var n=document.createTextNode("​");t.before(n),e&&St(n)}}))}var xt={delimiters:",",pattern:null,tagTextProp:"value",maxTags:1/0,callbacks:{},addTagOnBlur:!0,addTagOn:["blur","tab","enter"],onChangeAfterBlur:!0,duplicates:!1,whitelist:[],blacklist:[],enforceWhitelist:!1,userInput:!0,focusable:!0,keepInvalidTags:!1,createInvalidTags:!0,mixTagsAllowedAfter:/,|\.|\:|\s/,mixTagsInterpolator:["[[","]]"],backspace:!0,skipInvalid:!1,pasteAsTags:!0,editTags:{clicks:2,keepInvalid:!0},transformTag:function(){},trim:!0,a11y:{focusableTags:!1},mixMode:{insertAfterTag:" "},autoComplete:{enabled:!0,rightKey:!1,tabKey:!1},classNames:{namespace:"tagify",mixMode:"tagify--mix",selectMode:"tagify--select",input:"tagify__input",focus:"tagify--focus",tagNoAnimation:"tagify--noAnim",tagInvalid:"tagify--invalid",tagNotAllowed:"tagify--notAllowed",scopeLoading:"tagify--loading",hasMaxTags:"tagify--hasMaxTags",hasNoTags:"tagify--noTags",empty:"tagify--empty",inputInvalid:"tagify__input--invalid",dropdown:"tagify__dropdown",dropdownWrapper:"tagify__dropdown__wrapper",dropdownHeader:"tagify__dropdown__header",dropdownFooter:"tagify__dropdown__footer",dropdownItem:"tagify__dropdown__item",dropdownItemActive:"tagify__dropdown__item--active",dropdownItemHidden:"tagify__dropdown__item--hidden",dropdownItemSelected:"tagify__dropdown__item--selected",dropdownInital:"tagify__dropdown--initial",tag:"tagify__tag",tagText:"tagify__tag-text",tagX:"tagify__tag__removeBtn",tagLoading:"tagify__tag--loading",tagEditing:"tagify__tag--editable",tagFlash:"tagify__tag--flash",tagHide:"tagify__tag--hide"},dropdown:{classname:"",enabled:2,maxItems:10,searchKeys:["value","searchBy"],fuzzySearch:!0,caseSensitive:!1,accentedSearch:!0,includeSelectedTags:!1,escapeHTML:!0,highlightFirst:!0,closeOnSelect:!0,clearOnSelect:!0,position:"all",appendTarget:null},hooks:{beforeRemoveTag:function(){return Promise.resolve()},beforePaste:function(){return Promise.resolve()},suggestionClick:function(){return Promise.resolve()},beforeKeyDown:function(){return Promise.resolve()}}};function Ot(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function Dt(t){for(var e=1;et.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],e=this.dropdown.events.callbacks,n=this.listeners.dropdown=this.listeners.dropdown||{position:this.dropdown.position.bind(this,null),onKeyDown:e.onKeyDown.bind(this),onMouseOver:e.onMouseOver.bind(this),onMouseLeave:e.onMouseLeave.bind(this),onClick:e.onClick.bind(this),onScroll:e.onScroll.bind(this)},i=t?"addEventListener":"removeEventListener";"manual"!=this.settings.dropdown.position&&(document[i]("scroll",n.position,!0),window[i]("resize",n.position),window[i]("keydown",n.onKeyDown)),this.DOM.dropdown[i]("mouseover",n.onMouseOver),this.DOM.dropdown[i]("mouseleave",n.onMouseLeave),this.DOM.dropdown[i]("mousedown",n.onClick),this.DOM.dropdown.content[i]("scroll",n.onScroll)},callbacks:{onKeyDown:function(t){var e=this;if(this.state.hasFocus&&!this.state.composing){var n=this.settings,i=n.dropdown.includeSelectedTags,s=this.DOM.dropdown.querySelector(n.classNames.dropdownItemActiveSelector),a=this.dropdown.getSuggestionDataByNode(s),o="mix"==n.mode,r="select"==n.mode;n.hooks.beforeKeyDown(t,{tagify:this}).then((function(l){switch(t.key){case"ArrowDown":case"ArrowUp":case"Down":case"Up":t.preventDefault();var d=e.dropdown.getAllSuggestionsRefs(),c="ArrowUp"==t.key||"Up"==t.key;s&&(s=e.dropdown.getNextOrPrevOption(s,!c)),s&&s.matches(n.classNames.dropdownItemSelector)||(s=d[c?d.length-1:0]),e.dropdown.highlightOption(s,!0);break;case"PageUp":case"PageDown":var u;t.preventDefault();var h=e.dropdown.getAllSuggestionsRefs(),g=Math.floor(e.DOM.dropdown.content.clientHeight/(null===(u=h[0])||void 0===u?void 0:u.offsetHeight))||1,p="PageUp"===t.key;if(s){var f=h.indexOf(s),m=p?Math.max(0,f-g):Math.min(h.length-1,f+g);s=h[m]}else s=h[0];e.dropdown.highlightOption(s,!0);break;case"Home":case"End":t.preventDefault();var v=e.dropdown.getAllSuggestionsRefs();s=v["Home"===t.key?0:v.length-1],e.dropdown.highlightOption(s,!0);break;case"Escape":case"Esc":e.dropdown.hide();break;case"ArrowRight":if(e.state.actions.ArrowLeft||n.autoComplete.rightKey)return;case"Tab":var y=!n.autoComplete.rightKey||!n.autoComplete.tabKey;if(!o&&!r&&s&&y&&!e.state.editing&&a){t.preventDefault();var w=e.dropdown.getMappedValue(a);return e.state.autoCompleteData=a,e.input.autocomplete.set.call(e,w),!1}return!0;case"Enter":t.preventDefault(),e.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),n.hooks.suggestionClick(t,{tagify:e,tagData:a,suggestionElm:s}).then((function(){if(s){var n=i?s:e.dropdown.getNextOrPrevOption(s,!c);e.dropdown.selectOption(s,t,(function(){if(n){var t=n.getAttribute("value");n=e.dropdown.getSuggestionNodeByValue(t),e.dropdown.highlightOption(n)}}))}else e.dropdown.hide(),o||e.addTags(e.state.inputText.trim(),!0)})).catch((function(t){return st.warn(t)}));break;case"Backspace":if(o||e.state.editing.scope)return;var b=e.input.raw.call(e);""!=b&&8203!=b.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0))}}))}},onMouseOver:function(t){var e=t.target.closest(this.settings.classNames.dropdownItemSelector);this.dropdown.highlightOption(e)},onMouseLeave:function(t){this.dropdown.highlightOption()},onClick:function(t){var e=this;if(0==t.button&&t.target!=this.DOM.dropdown&&t.target!=this.DOM.dropdown.content){var n=t.target.closest(this.settings.classNames.dropdownItemSelector),i=this.dropdown.getSuggestionDataByNode(n);this.state.actions.selectOption=!0,setTimeout((function(){return e.state.actions.selectOption=!1}),100),this.settings.hooks.suggestionClick(t,{tagify:this,tagData:i,suggestionElm:n}).then((function(){n?e.dropdown.selectOption(n,t):e.dropdown.hide()})).catch((function(t){return st.warn(t)}))}},onScroll:function(t){var e=t.target,n=e.scrollTop/(e.scrollHeight-e.parentNode.clientHeight)*100;this.trigger("dropdown:scroll",{percentage:Math.round(n)})}}},refilter:function(t){t=t||this.state.dropdown.query||"",this.suggestedListItems=this.dropdown.filterListItems(t),this.dropdown.fill(),this.suggestedListItems.length||this.dropdown.hide(),this.trigger("dropdown:updated",this.DOM.dropdown)},getSuggestionDataByNode:function(t){for(var e,n=t&&t.getAttribute("value"),i=this.suggestedListItems.length;i--;){if(ut(e=this.suggestedListItems[i])&&e.value==n)return e;if(e==n)return{value:e}}},getSuggestionNodeByValue:function(t){return this.dropdown.getAllSuggestionsRefs().find((function(e){return e.getAttribute("value")===t}))},getNextOrPrevOption:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.dropdown.getAllSuggestionsRefs(),i=n.findIndex((function(e){return e===t}));return e?n[i+1]:n[i-1]},highlightOption:function(t,e){var n,i=this.settings.classNames.dropdownItemActive;if(this.state.ddItemElm&&(this.state.ddItemElm.classList.remove(i),this.state.ddItemElm.removeAttribute("aria-selected")),!t)return this.state.ddItemData=null,this.state.ddItemElm=null,void this.input.autocomplete.suggest.call(this);n=this.dropdown.getSuggestionDataByNode(t),this.state.ddItemData=n,this.state.ddItemElm=t,t.classList.add(i),t.setAttribute("aria-selected",!0),e&&(t.parentNode.scrollTop=t.clientHeight+t.offsetTop-t.parentNode.clientHeight),this.settings.autoComplete&&(this.input.autocomplete.suggest.call(this,n),this.dropdown.position())},selectOption:function(t,e,n){var i=this,s=this.settings,a=s.dropdown.includeSelectedTags,o=s.dropdown,r=o.clearOnSelect,l=o.closeOnSelect;if(!t)return this.addTags(this.state.inputText,!0),void(l&&this.dropdown.hide());e=e||{};var d=t.getAttribute("value"),c="noMatch"==d,u="mix"==s.mode,h=this.suggestedListItems.find((function(t){var e;return(null!==(e=t.value)&&void 0!==e?e:t)==d}));if(this.trigger("dropdown:select",{data:h,elm:t,event:e}),h||c){if(this.state.editing){var g=this.normalizeTags([h])[0];h=s.transformTag.call(this,g)||g,this.onEditTagDone(null,ht({__isValid:!0},h))}else this[u?"addMixTags":"addTags"]([h||this.input.raw.call(this)],r);(u||this.DOM.input.parentNode)&&(setTimeout((function(){i.DOM.input.focus(),i.toggleFocusClass(!0)})),l&&setTimeout(this.dropdown.hide.bind(this)),a?n&&n():(t.addEventListener("transitionend",(function(){i.dropdown.fillHeaderFooter(),setTimeout((function(){t.remove(),i.dropdown.refilter(),n&&n()}),100)}),{once:!0}),t.classList.add(this.settings.classNames.dropdownItemHidden)))}else l&&setTimeout(this.dropdown.hide.bind(this))},selectAll:function(t){this.suggestedListItems.length=0,this.dropdown.hide(),this.dropdown.filterListItems("");var e=this.dropdown.filterListItems("");return t||(e=this.state.dropdown.suggestions),this.addTags(e,!0),this},filterListItems:function(t,e){var n,i,s,a,o,r,l=function(){var t,l,d=void 0,c=void 0;t=p[w],i=(null!=(l=Object)&&"undefined"!=typeof Symbol&&l[Symbol.hasInstance]?l[Symbol.hasInstance](t):t instanceof l)?p[w]:{value:p[w]};var f,m=Object.keys(i).some((function(t){return y.includes(t)}))?y:["value"];u.fuzzySearch&&!e.exact?(a=m.reduce((function(t,e){return t+" "+(i[e]||"")}),"").toLowerCase().trim(),u.accentedSearch&&(a=pt(a),r=pt(r)),d=0==a.indexOf(r),c=a===r,f=a,s=r.toLowerCase().split(" ").every((function(t){return f.includes(t.toLowerCase())}))):(d=!0,s=m.some((function(t){var n=""+(i[t]||"");return u.accentedSearch&&(n=pt(n),r=pt(r)),u.caseSensitive||(n=n.toLowerCase()),c=n===r,e.exact?n===r:0==n.indexOf(r)}))),o=!u.includeSelectedTags&&n.isTagDuplicate(ut(i)?i.value:i),s&&!o&&(c&&d?g.push(i):"startsWith"==u.sortby&&d?h.unshift(i):h.push(i))},d=this,c=this.settings,u=c.dropdown,h=(e=e||{},[]),g=[],p=c.whitelist,f=u.maxItems>=0?u.maxItems:1/0,m=u.includeSelectedTags,v="function"==typeof u.sortby,y=u.searchKeys,w=0;if(!(t="select"==c.mode&&this.value.length&&this.value[0][c.tagTextProp]==t?"":t)||!y.length){h=m?p:p.filter((function(t){return!d.isTagDuplicate(ut(t)?t.value:t)}));var b=v?u.sortby(h,r):h.slice(0,f);return this.state.dropdown.suggestions=b,b}for(r=u.caseSensitive?""+t:(""+t).toLowerCase();w[\r\n ]+\<").split(/>\s+<").trim():""},fillHeaderFooter:function(){var t=this.dropdown.filterListItems(this.state.dropdown.query),e=this.parseTemplate("dropdownHeader",[t]),n=this.parseTemplate("dropdownFooter",[t]),i=this.dropdown.getHeaderRef(),s=this.dropdown.getFooterRef();e&&(null==i||i.parentNode.replaceChild(e,i)),n&&(null==s||s.parentNode.replaceChild(n,s))},position:function(t){var e=this.settings.dropdown,n=this.dropdown.getAppendTarget();if("manual"!=e.position&&n){var i,s,a,o,r,l,d,c,u,h,g=this.DOM.dropdown,p=e.RTL,f=n===document.body,m=n===this.DOM.scope,v=f?window.pageYOffset:n.scrollTop,y=document.fullscreenElement||document.webkitFullscreenElement||document.documentElement,w=y.clientHeight,b=Math.max(y.clientWidth||0,window.innerWidth||0),T=b>480?e.position:"all",S=this.DOM["input"==T?"input":"scope"];if(t=t||g.clientHeight,this.state.dropdown.visible){if("text"==T?(a=(i=function(){var t=document.getSelection();if(t.rangeCount){var e,n,i=t.getRangeAt(0),s=i.startContainer,a=i.startOffset;if(a>0)return(n=document.createRange()).setStart(s,a-1),n.setEnd(s,a),{left:(e=n.getBoundingClientRect()).right,top:e.top,bottom:e.bottom};if(s.getBoundingClientRect)return s.getBoundingClientRect()}return{left:-9999,top:-9999}}()).bottom,s=i.top,o=i.left,r="auto"):(l=function(t){var e=0,n=0;for(t=t.parentNode;t&&t!=y;)e+=t.offsetTop||0,n+=t.offsetLeft||0,t=t.parentNode;return{top:e,left:n}}(n),i=S.getBoundingClientRect(),s=m?-1:i.top-l.top,a=(m?i.height:i.bottom-l.top)-1,o=m?-1:i.left-l.left,r=i.width+"px"),!f){var E=function(){for(var t=0,n=e.appendTarget.parentNode;n;)t+=n.scrollTop||0,n=n.parentNode;return t}();s+=E,a+=E}var x;s=Math.floor(s),a=Math.ceil(a),c=b-o<120,u=((d=null!==(x=e.placeAbove)&&void 0!==x?x:w-i.bottom\n ').concat(this.settings.templates.input.call(this),"\n ").concat(et,"\n ")},input:function(){var t=this.settings,e=t.placeholder||et;return"')},tag:function(t,e){var n=e.settings;return'\n \n
\n ').concat(t[n.tagTextProp]||t.value,"\n
\n
")},dropdown:function(t){var e=t.dropdown,n="manual"==e.position;return'
\n
\n
')},dropdownContent:function(t){var e=this.settings.templates,n=this.state.dropdown.suggestions;return"\n ".concat(e.dropdownHeader.call(this,n),"\n ").concat(t,"\n ").concat(e.dropdownFooter.call(this,n),"\n ")},dropdownItem:function(t){return"
').concat(t.mappedValue||t.value,"
")},dropdownHeader:function(t){return"
')},dropdownFooter:function(t){var e=t.length-this.settings.dropdown.maxItems;return e>0?"
\n ').concat(e," more items. Refine your search.\n
"):""},dropdownItemNoMatch:null};function jt(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.length)&&(e=t.length);for(var n=0,i=new Array(e);n0&&void 0!==arguments[0])||arguments[0],n=this.settings,i=this.events.callbacks,s=e?"addEventListener":"removeEventListener";if(!this.state.mainEvents||!e){for(var a in this.state.mainEvents=e,e&&!this.listeners.main&&(this.events.bindGlobal.call(this),this.settings.isJQueryPlugin&&jQuery(this.DOM.originalInput).on("tagify.removeAllTags",this.removeAllTags.bind(this))),t=this.listeners.main=this.listeners.main||{keydown:["input",i.onKeydown.bind(this)],click:["scope",i.onClickScope.bind(this)],dblclick:"select"!=n.mode&&["scope",i.onDoubleClickScope.bind(this)],paste:["input",i.onPaste.bind(this)],drop:["input",i.onDrop.bind(this)],compositionstart:["input",i.onCompositionStart.bind(this)],compositionend:["input",i.onCompositionEnd.bind(this)]})t[a]&&this.DOM[t[a][0]][s](a,t[a][1]);var o=this.listeners.main.inputMutationObserver||new MutationObserver(i.onInputDOMChange.bind(this));o.disconnect(),"mix"==n.mode&&o.observe(this.DOM.input,{childList:!0}),this.events.bindOriginaInputListener.call(this)}},bindOriginaInputListener:function(t){var e=(t||0)+500;this.listeners.main&&(clearInterval(this.listeners.main.originalInputValueObserverInterval),this.listeners.main.originalInputValueObserverInterval=setInterval(this.events.callbacks.observeOriginalInputValue.bind(this),e))},bindGlobal:function(t){var e,n=this.events.callbacks,i=t?"removeEventListener":"addEventListener";if(this.listeners&&(t||!this.listeners.global)){this.listeners.global=this.listeners.global||[{type:this.isIE?"keydown":"input",target:this.DOM.input,cb:n[this.isIE?"onInputIE":"onInput"].bind(this)},{type:"keydown",target:window,cb:n.onWindowKeyDown.bind(this)},{type:"focusin",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"focusout",target:this.DOM.scope,cb:n.onFocusBlur.bind(this)},{type:"click",target:document,cb:n.onClickAnywhere.bind(this),useCapture:!0}];var s=!0,a=!1,o=void 0;try{for(var r,l=this.listeners.global[Symbol.iterator]();!(s=(r=l.next()).done);s=!0)(e=r.value).target[i](e.type,e.cb,!!e.useCapture)}catch(t){a=!0,o=t}finally{try{s||null==l.return||l.return()}finally{if(a)throw o}}}},unbindGlobal:function(){this.events.bindGlobal.call(this,!0)},callbacks:{onFocusBlur:function(t){var e,n,i=this.settings,s=yt.call(this,t.relatedTarget),a=vt.call(this,t.relatedTarget),o=t.target.classList.contains(i.classNames.tagX),r="focusin"==t.type,l="focusout"==t.type;o&&"mix"!=i.mode&&this.DOM.input.focus(),s&&r&&!a&&!o&&this.toggleFocusClass(this.state.hasFocus=+new Date);var d=t.target?this.trim(this.DOM.input.textContent):"",c=null===(n=this.value)||void 0===n||null===(e=n[0])||void 0===e?void 0:e[i.tagTextProp],u=i.dropdown.enabled>=0,h={relatedTarget:t.relatedTarget},g=this.state.actions.selectOption&&(u||!i.dropdown.closeOnSelect),p=this.state.actions.addNew&&u;if(l){if(t.relatedTarget===this.DOM.scope)return this.dropdown.hide(),void this.DOM.input.focus();this.postUpdate(),i.onChangeAfterBlur&&this.triggerChangeEvent()}if(!(g||p||o))if(this.state.hasFocus=!(!r&&!s)&&+new Date,this.toggleFocusClass(this.state.hasFocus),"mix"!=i.mode){if(r){if(!i.focusable)return;var f=0===i.dropdown.enabled&&!this.state.dropdown.visible,m=!a||"select"===i.mode,v=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector);return this.trigger("focus",h),void(f&&m&&(this.dropdown.show(this.value.length?"":void 0),this.setRangeAtStartEnd(!1,v)))}if(l){if(this.trigger("blur",h),this.loading(!1),"select"==i.mode){if(this.value.length){var y=this.getTagElms()[0];d=this.trim(y.textContent)}c===d&&(d="")}d&&!this.state.actions.selectOption&&i.addTagOnBlur&&i.addTagOn.includes("blur")&&this.addTags(d,!0)}s||(this.DOM.input.removeAttribute("style"),this.dropdown.hide())}else r?this.trigger("focus",h):l&&(this.trigger("blur",h),this.loading(!1),this.dropdown.hide(),this.state.dropdown.visible=void 0,this.setStateSelection())},onCompositionStart:function(t){this.state.composing=!0},onCompositionEnd:function(t){this.state.composing=!1},onWindowKeyDown:function(t){var e,n=this.settings,i=document.activeElement,s=yt.call(this,i)&&this.DOM.scope.contains(i),a=i===this.DOM.input,o=s&&i.hasAttribute("readonly"),r=this.DOM.scope.querySelector(this.settings.classNames.tagTextSelector),l=this.state.dropdown.visible;if(("Tab"===t.key&&l||this.state.hasFocus||s&&!o)&&!a){e=i.nextElementSibling;var d=t.target.classList.contains(n.classNames.tagX);switch(t.key){case"Backspace":n.readonly||this.state.editing||(this.removeTags(i),(e||this.DOM.input).focus());break;case"Enter":if(d)return void this.removeTags(t.target.parentNode);n.a11y.focusableTags&&vt.call(this,i)&&setTimeout(this.editTag.bind(this),0,i);break;case"ArrowDown":this.state.dropdown.visible||"mix"==n.mode||this.dropdown.show();break;case"Tab":null==r||r.focus()}}},onKeydown:function(t){var e=this,n=this.settings;if(!this.state.composing&&n.userInput){"select"==n.mode&&n.enforceWhitelist&&this.value.length&&"Tab"!=t.key&&t.preventDefault();var i=this.trim(t.target.textContent);this.trigger("keydown",{event:t}),n.hooks.beforeKeyDown(t,{tagify:this}).then((function(s){if("mix"==n.mode){switch(t.key){case"Left":case"ArrowLeft":e.state.actions.ArrowLeft=!0;break;case"Delete":case"Backspace":if(e.state.editing)return;var a=document.getSelection(),o="Delete"==t.key&&a.anchorOffset==(a.anchorNode.length||0),r=a.anchorNode.previousSibling,l=1==a.anchorNode.nodeType||!a.anchorOffset&&r&&1==r.nodeType&&a.anchorNode.previousSibling;!function(t){var e=document.createElement("div");t.replace(/\&#?[0-9a-z]+;/gi,(function(t){return e.innerHTML=t,e.innerText}))}(e.DOM.input.innerHTML);var d,c,u,h=e.getTagElms(),g=1===a.anchorNode.length&&a.anchorNode.nodeValue==String.fromCharCode(8203);if("edit"==n.backspace&&l)return d=1==a.anchorNode.nodeType?null:a.anchorNode.previousElementSibling,setTimeout(e.editTag.bind(e),0,d),void t.preventDefault();if(ft()&&Ht(l,Element))return u=dt(l),l.hasAttribute("readonly")||l.remove(),e.DOM.input.focus(),void setTimeout((function(){St(u),e.DOM.input.click()}));if("BR"==a.anchorNode.nodeName)return;if((o||l)&&1==a.anchorNode.nodeType?c=0==a.anchorOffset?o?h[0]:null:h[Math.min(h.length,a.anchorOffset)-1]:o?c=a.anchorNode.nextElementSibling:Ht(l,Element)&&(c=l),3==a.anchorNode.nodeType&&!a.anchorNode.nodeValue&&a.anchorNode.previousElementSibling&&t.preventDefault(),(l||o)&&!n.backspace)return void t.preventDefault();if("Range"!=a.type&&!a.anchorOffset&&a.anchorNode==e.DOM.input&&"Delete"!=t.key)return void t.preventDefault();if("Range"!=a.type&&c&&c.hasAttribute("readonly"))return void St(dt(c));"Delete"==t.key&&g&&Tt(a.anchorNode.nextSibling)&&e.removeTags(a.anchorNode.nextSibling)}return!0}var p="manual"==n.dropdown.position;switch(t.key){case"Backspace":"select"==n.mode&&n.enforceWhitelist&&e.value.length?e.removeTags():e.state.dropdown.visible&&"manual"!=n.dropdown.position||""!=t.target.textContent&&8203!=i.charCodeAt(0)||(!0===n.backspace?e.removeTags():"edit"==n.backspace&&setTimeout(e.editTag.bind(e),0));break;case"Esc":case"Escape":if(e.state.dropdown.visible)return;t.target.blur();break;case"Down":case"ArrowDown":e.state.dropdown.visible||e.dropdown.show();break;case"ArrowRight":var f=e.state.inputSuggestion||e.state.ddItemData;if(f&&n.autoComplete.rightKey)return void e.addTags([f],!0);break;case"Tab":return!0;case"Enter":if(e.state.dropdown.visible&&!p)return;t.preventDefault();var m=e.state.autoCompleteData||i;setTimeout((function(){e.state.dropdown.visible&&!p||e.state.actions.selectOption||!n.addTagOn.includes(t.key.toLowerCase())||(e.addTags([m],!0),e.state.autoCompleteData=null)}))}})).catch((function(t){return t}))}},onInput:function(t){this.postUpdate();var e=this.settings;if("mix"==e.mode)return this.events.callbacks.onMixTagsInput.call(this,t);var n=this.input.normalize.call(this,void 0,{trim:!1}),i=n.length>=e.dropdown.enabled,s={value:n,inputElm:this.DOM.input},a=this.validateTag({value:n});"select"==e.mode&&this.toggleScopeValidation(a),s.isValid=a,this.state.inputText!=n&&(this.input.set.call(this,n,!1),-1!=n.search(e.delimiters)?this.addTags(n)&&this.input.set.call(this):e.dropdown.enabled>=0&&this.dropdown[i?"show":"hide"](n),this.trigger("input",s))},onMixTagsInput:function(t){var e,n,i,s,a,o,r,l,d=this,c=this.settings,u=this.value.length,h=this.getTagElms(),g=document.createDocumentFragment(),p=window.getSelection().getRangeAt(0),f=[].map.call(h,(function(t){return Tt(t).value}));if("deleteContentBackward"==t.inputType&&ft()&&this.events.callbacks.onKeydown.call(this,{target:t.target,key:"Backspace"}),Et(this.getTagElms()),this.value.slice().forEach((function(t){t.readonly&&!f.includes(t.value)&&g.appendChild(d.createTagElem(t))})),g.childNodes.length&&(p.insertNode(g),this.setRangeAtStartEnd(!1,g.lastChild)),h.length!=u)return this.value=[].map.call(this.getTagElms(),(function(t){return Tt(t)})),void this.update({withoutChangeEvent:!0});if(this.hasMaxTags())return!0;if(window.getSelection&&(o=window.getSelection()).rangeCount>0&&3==o.anchorNode.nodeType){if((p=o.getRangeAt(0).cloneRange()).collapse(!0),p.setStart(o.focusNode,0),i=(e=p.toString().slice(0,p.endOffset)).split(c.pattern).length-1,(n=e.match(c.pattern))&&(s=e.slice(e.lastIndexOf(n[n.length-1]))),s){if(this.state.actions.ArrowLeft=!1,this.state.tag={prefix:s.match(c.pattern)[0],value:s.replace(c.pattern,"")},this.state.tag.baseOffset=o.baseOffset-this.state.tag.value.length,l=this.state.tag.value.match(c.delimiters))return this.state.tag.value=this.state.tag.value.replace(c.delimiters,""),this.state.tag.delimiters=l[0],this.addTags(this.state.tag.value,c.dropdown.clearOnSelect),void this.dropdown.hide();a=this.state.tag.value.length>=c.dropdown.enabled;try{r=(r=this.state.flaggedTags[this.state.tag.baseOffset]).prefix==this.state.tag.prefix&&r.value[0]==this.state.tag.value[0],this.state.flaggedTags[this.state.tag.baseOffset]&&!this.state.tag.value&&delete this.state.flaggedTags[this.state.tag.baseOffset]}catch(t){}(r||i500||!e.focusable)?this.state.dropdown.visible?this.dropdown.hide():0===e.dropdown.enabled&&"mix"!=e.mode&&this.dropdown.show(this.value.length?"":void 0):"select"!=e.mode||0!==e.dropdown.enabled||this.state.dropdown.visible||(this.events.callbacks.onDoubleClickScope.call(this,function(t,e){return e=null!=e?e:{},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):function(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);n.push.apply(n,i)}return n}(Object(e)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))})),t}(function(t){for(var e=1;e=this.settings.dropdown.enabled&&(this.state.editing&&(this.state.editing.value=o),this.dropdown.show(o)),this.trigger("edit:input",{tag:i,index:s,data:ht({},this.value[s],{newValue:o}),event:e})},onEditTagPaste:function(t,e){var n=(e.clipboardData||window.clipboardData).getData("Text");e.preventDefault();var i=bt(n);this.setRangeAtStartEnd(!1,i)},onEditTagClick:function(t,e){this.events.callbacks.onClickScope.call(this,e)},onEditTagFocus:function(t){this.state.editing={scope:t,input:t.querySelector("[contenteditable]")}},onEditTagBlur:function(t,e){var n=vt.call(this,e.relatedTarget);if("select"==this.settings.mode&&n&&e.relatedTarget.contains(e.target))this.dropdown.hide();else if(this.state.editing&&(this.state.hasFocus||this.toggleFocusClass(),this.DOM.scope.contains(document.activeElement)||this.trigger("blur",{}),this.DOM.scope.contains(t))){var i,s,a,o=this.settings,r=t.closest("."+o.classNames.tag),l=Tt(r),d=this.input.normalize.call(this,t),c=(qt(i={},o.tagTextProp,d),qt(i,"__tagId",l.__tagId),i),u=l.__originalData,h=this.editTagChangeDetected(ht(l,c)),g=this.validateTag(c);if(d)if(h){var p;if(s=this.hasMaxTags(),a=ht({},u,(qt(p={},o.tagTextProp,this.trim(d)),qt(p,"__isValid",g),p)),o.transformTag.call(this,a,u),!0!==(g=(!s||!0===u.__isValid)&&this.validateTag(a))){if(this.trigger("invalid",{data:a,tag:r,message:g}),o.editTags.keepInvalid)return;o.keepInvalidTags?a.__isValid=g:a=u}else o.keepInvalidTags&&(delete a.title,delete a["aria-invalid"],delete a.class);this.onEditTagDone(r,a)}else this.onEditTagDone(r,u);else this.onEditTagDone(r)}},onEditTagkeydown:function(t,e){if(!this.state.composing)switch(this.trigger("edit:keydown",{event:t}),t.key){case"Esc":case"Escape":this.state.editing=!1,e.__tagifyTagData.__originalData.value?e.parentNode.replaceChild(e.__tagifyTagData.__originalHTML,e):e.remove();break;case"Enter":case"Tab":t.preventDefault(),setTimeout((function(){return t.target.blur()}),0)}},onDoubleClickScope:function(t){var e=t.target.closest("."+this.settings.classNames.tag);if(e){var n,i,s=Tt(e),a=this.settings;!1!==(null==s?void 0:s.editable)&&(n=e.classList.contains(this.settings.classNames.tagEditing),i=e.hasAttribute("readonly"),a.readonly||n||i||!this.settings.editTags||!a.userInput||(this.events.callbacks.onEditTagFocus.call(this,e),this.editTag(e)),this.toggleFocusClass(!0),"select"!=a.mode&&this.trigger("dblclick",{tag:e,index:this.getNodeIndex(e),data:Tt(e)}))}},onInputDOMChange:function(t){var e=this;t.forEach((function(t){t.addedNodes.forEach((function(t){if("

"==t.outerHTML)t.replaceWith(document.createElement("br"));else if(1==t.nodeType&&t.querySelector(e.settings.classNames.tagSelector)){var n,i=document.createTextNode("");3==t.childNodes[0].nodeType&&"BR"!=t.previousSibling.nodeName&&(i=document.createTextNode("\n")),(n=t).replaceWith.apply(n,Rt([i].concat(Rt(Rt(t.childNodes).slice(0,-1))))),St(i)}else if(vt.call(e,t)){var s;if(3!=(null===(s=t.previousSibling)||void 0===s?void 0:s.nodeType)||t.previousSibling.textContent||t.previousSibling.remove(),t.previousSibling&&"BR"==t.previousSibling.nodeName){t.previousSibling.replaceWith("\n​");for(var a=t.nextSibling,o="";a;)o+=a.textContent,a=a.nextSibling;o.trim()&&St(t.previousSibling)}else t.previousSibling&&!Tt(t.previousSibling)||t.before("​")}})),t.removedNodes.forEach((function(t){t&&"BR"==t.nodeName&&vt.call(e,n)&&(e.removeTags(n),e.fixFirefoxLastTagNoCaret())}))}));var n=this.DOM.input.lastChild;n&&""==n.nodeValue&&n.remove(),n&&"BR"==n.nodeName||this.DOM.input.appendChild(document.createElement("br"))}}};function Ut(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);nt.map((t=>t.value)),dropdown:{enabled:e.dropdownSuggestionsStartAfter,maxItems:e.dropdownMaxItems,closeOnSelect:e.dropdownCloseOnSelect,highlightFirst:e.highlight},transformTag(t){t.display||(t.display=t.value,t.value=encodeURIComponent(t.value)),t.display=t.display.replace(//g,">")},templates:{wrapper(t,e){return`
\n ${this.settings.templates.input.call(this)}\n ​\n
`},tag:t=>`
\n \n
\n ${t.display}\n
\n
`,dropdownItem:t=>`
\n ${t.display}\n
`}}}(e.id,n));o.addTags(i),void 0!==s&&o.on("input",(t=>{!function(t,e,n,i,s,a){Qt instanceof AbortController&&Qt.abort(),Qt=new AbortController,t.whitelist=null,void 0!==Gt&&(t.DOM.scope.ownerDocument.defaultView.clearTimeout(Gt),Gt=void 0),s.detail.value.length{const e=s.detail.value;n.writeParameter(i,e),t.loading(!0),fetch(n.getUrl().toString(),{signal:Qt.signal}).then((t=>t.json())).catch((()=>{})).then((n=>{t.whitelist=n,t.loading(!1).dropdown.show(e)}))}),a))}(o,n.suggestionStarts,s,a,t,n.autocompleteTriggerTimeout)}))}Jt.prototype={_dropdown:Lt,placeCaretAfterNode:St,getSetTagData:Tt,helpers:{sameStr:at,removeCollectionProp:ot,omit:rt,isObject:ut,parseHTML:lt,escapeHTML:ct,extend:ht,concatWithoutDups:gt,getUID:mt,isNodeTag:vt},customEventsList:["change","add","remove","invalid","input","paste","click","keydown","focus","blur","edit:input","edit:beforeUpdate","edit:updated","edit:start","edit:keydown","dropdown:show","dropdown:hide","dropdown:select","dropdown:updated","dropdown:noMatch","dropdown:scroll"],dataProps:["__isValid","__removed","__originalData","__originalHTML","__tagId"],trim:function(t){return this.settings.trim&&t&&"string"==typeof t?t.trim():t},parseHTML:lt,templates:Bt,parseTemplate:function(t,e){return lt((t=this.settings.templates[t]||t).apply(this,e))},set whitelist(t){var e=t&&Array.isArray(t);this.settings.whitelist=e?t:[],this.setPersistedData(e?t:[],"whitelist")},get whitelist(){return this.settings.whitelist},set userInput(t){this.settings.userInput=!!t,this.setContentEditable(!!t)},get userInput(){return this.settings.userInput},generateClassSelectors:function(t){var e=function(e){var n=e;Object.defineProperty(t,n+"Selector",{get:function(){return"."+this[n].split(" ")[0]}})};for(var n in t)e(n)},applySettings:function(t,e){var n,i;xt.templates=this.templates;var s=ht({},xt,"mix"==e.mode?{dropdown:{position:"text"}}:{}),a=this.settings=ht({},s,e);if(a.disabled=t.hasAttribute("disabled"),a.readonly=a.readonly||t.hasAttribute("readonly"),a.placeholder=ct(t.getAttribute("placeholder")||a.placeholder||""),a.required=t.hasAttribute("required"),this.generateClassSelectors(a.classNames),this.isIE&&(a.autoComplete=!1),["whitelist","blacklist"].forEach((function(e){var n=t.getAttribute("data-"+e);n&&zt(n=n.split(a.delimiters),Array)&&(a[e]=n)})),"autoComplete"in e&&!ut(e.autoComplete)&&(a.autoComplete=xt.autoComplete,a.autoComplete.enabled=e.autoComplete),"mix"==a.mode&&(a.pattern=a.pattern||/@/,a.autoComplete.rightKey=!0,a.delimiters=e.delimiters||null,a.tagTextProp&&!a.dropdown.searchKeys.includes(a.tagTextProp)&&a.dropdown.searchKeys.push(a.tagTextProp)),t.pattern)try{a.pattern=new RegExp(t.pattern)}catch(t){}if(a.delimiters){a._delimiters=a.delimiters;try{a.delimiters=new RegExp(this.settings.delimiters,"g")}catch(t){}}a.disabled&&(a.userInput=!1),this.TEXTS=Kt({},Pt,a.texts||{}),"select"==a.mode&&(a.dropdown.includeSelectedTags=!0),("select"!=a.mode||(null===(n=e.dropdown)||void 0===n?void 0:n.enabled))&&a.userInput||(a.dropdown.enabled=0),a.dropdown.appendTarget=(null===(i=e.dropdown)||void 0===i?void 0:i.appendTarget)||document.body,void 0===a.dropdown.includeSelectedTags&&(a.dropdown.includeSelectedTags=a.duplicates);var o=this.getPersistedData("whitelist");Array.isArray(o)&&(this.whitelist=Array.isArray(a.whitelist)?gt(a.whitelist,o):o)},getAttributes:function(t){var e,n=this.getCustomAttributes(t),i="";for(e in n)i+=" "+e+(void 0!==t[e]?'="'.concat(n[e],'"'):"");return i},getCustomAttributes:function(t){if(!ut(t))return"";var e,n={};for(e in t)"__"!=e.slice(0,2)&&"class"!=e&&t.hasOwnProperty(e)&&void 0!==t[e]&&(n[e]=ct(t[e]));return n},setStateSelection:function(){var t=window.getSelection(),e={anchorOffset:t.anchorOffset,anchorNode:t.anchorNode,range:t.getRangeAt&&t.rangeCount&&t.getRangeAt(0)};return this.state.selection=e,e},getCSSVars:function(){var t,e,n=getComputedStyle(this.DOM.scope,null);this.CSSVars={tagHideTransition:(t=function(t){if(!t)return{};var e=(t=t.trim().split(" ")[0]).split(/\d+/g).filter((function(t){return t})).pop().trim();return{value:+t.split(e).filter((function(t){return t}))[0].trim(),unit:e}}(("tag-hide-transition",n.getPropertyValue("--tag-hide-transition"))),e=t.value,"s"==t.unit?1e3*e:e)}},build:function(t){var e=this.DOM,n=t.closest("label");this.settings.mixMode.integrated?(e.originalInput=null,e.scope=t,e.input=t):(e.originalInput=t,e.originalInput_tabIndex=t.tabIndex,e.scope=this.parseTemplate("wrapper",[t,this.settings]),e.input=e.scope.querySelector(this.settings.classNames.inputSelector),t.parentNode.insertBefore(e.scope,t),t.tabIndex=-1),n&&n.setAttribute("for","")},destroy:function(){var t;this.events.unbindGlobal.call(this),null===(t=this.DOM.scope.parentNode)||void 0===t||t.removeChild(this.DOM.scope),this.DOM.originalInput.tabIndex=this.DOM.originalInput_tabIndex,delete this.DOM.originalInput.__tagify,this.dropdown.hide(!0),this.removeAllCustomListeners(),clearTimeout(this.dropdownHide__bindEventsTimeout),clearInterval(this.listeners.main.originalInputValueObserverInterval)},loadOriginalValues:function(t){var e,n=this.settings;if(this.state.blockChangeEvent=!0,void 0===t){var i=this.getPersistedData("value");t=i&&!this.DOM.originalInput.value?i:n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value}if(this.removeAllTags(),t)if("mix"==n.mode)this.parseMixTags(t),(e=this.DOM.input.lastChild)&&"BR"==e.tagName||this.DOM.input.insertAdjacentHTML("beforeend","
");else{try{zt(JSON.parse(t),Array)&&(t=JSON.parse(t))}catch(t){}this.addTags(t,!0).forEach((function(t){return t&&t.classList.add(n.classNames.tagNoAnimation)}))}else this.postUpdate();this.state.lastOriginalValueReported=n.mixMode.integrated?"":this.DOM.originalInput.value},cloneEvent:function(t){var e={};for(var n in t)"path"!=n&&(e[n]=t[n]);return e},loading:function(t){return this.state.isLoading=t,this.DOM.scope.classList[t?"add":"remove"](this.settings.classNames.scopeLoading),this},tagLoading:function(t,e){return t&&t.classList[e?"add":"remove"](this.settings.classNames.tagLoading),this},toggleClass:function(t,e){"string"==typeof t&&this.DOM.scope.classList.toggle(t,e)},toggleScopeValidation:function(t){var e=!0===t||void 0===t;!this.settings.required&&t&&t===this.TEXTS.empty&&(e=!0),this.toggleClass(this.settings.classNames.tagInvalid,!e),this.DOM.scope.title=e?"":t},toggleFocusClass:function(t){this.toggleClass(this.settings.classNames.focus,!!t)},setPlaceholder:function(t){var e=this;["data","aria"].forEach((function(n){return e.DOM.input.setAttribute("".concat(n,"-placeholder"),t)}))},triggerChangeEvent:function(){if(!this.settings.mixMode.integrated){var t=this.DOM.originalInput,e=this.state.lastOriginalValueReported!==t.value,n=new CustomEvent("change",{bubbles:!0});e&&(this.state.lastOriginalValueReported=t.value,n.simulated=!0,t._valueTracker&&t._valueTracker.setValue(Math.random()),t.dispatchEvent(n),this.trigger("change",this.state.lastOriginalValueReported),t.value=this.state.lastOriginalValueReported)}},events:$t,fixFirefoxLastTagNoCaret:function(){},setRangeAtStartEnd:function(t,e){if(e){t="number"==typeof t?t:!!t,e=e.lastChild||e;var n=document.getSelection();if(zt(n.focusNode,Element)&&!this.DOM.input.contains(n.focusNode))return!0;try{n.rangeCount>=1&&["Start","End"].forEach((function(i){return n.getRangeAt(0)["set"+i](e,t||e.length)}))}catch(t){console.warn(t)}}},insertAfterTag:function(t,e){if(e=e||this.settings.mixMode.insertAfterTag,t&&t.parentNode&&e)return e="string"==typeof e?document.createTextNode(e):e,t.parentNode.insertBefore(e,t.nextSibling),e},editTagChangeDetected:function(t){var e=t.__originalData;for(var n in e)if(!this.dataProps.includes(n)&&t[n]!=e[n])return!0;return!1},getTagTextNode:function(t){return t.querySelector(this.settings.classNames.tagTextSelector)},setTagTextNode:function(t,e){this.getTagTextNode(t).innerHTML=ct(e)},editTag:function(t,e){var n=this;t=t||this.getLastTag(),e=e||{};var i=this.settings,s=this.getTagTextNode(t),a=this.getNodeIndex(t),o=Tt(t),r=this.events.callbacks,l=!0,d="select"==i.mode;if(!d&&this.dropdown.hide(),s){if(!zt(o,Object)||!("editable"in o)||o.editable)return o=Tt(t,{__originalData:ht({},o),__originalHTML:t.cloneNode(!0)}),Tt(o.__originalHTML,o.__originalData),s.setAttribute("contenteditable",!0),t.classList.add(i.classNames.tagEditing),this.events.callbacks.onEditTagFocus.call(this,t),s.addEventListener("click",r.onEditTagClick.bind(this,t)),s.addEventListener("blur",r.onEditTagBlur.bind(this,this.getTagTextNode(t))),s.addEventListener("input",r.onEditTagInput.bind(this,s)),s.addEventListener("paste",r.onEditTagPaste.bind(this,s)),s.addEventListener("keydown",(function(e){return r.onEditTagkeydown.call(n,e,t)})),s.addEventListener("compositionstart",r.onCompositionStart.bind(this)),s.addEventListener("compositionend",r.onCompositionEnd.bind(this)),e.skipValidation||(l=this.editTagToggleValidity(t)),s.originalIsValid=l,this.trigger("edit:start",{tag:t,index:a,data:o,isValid:l}),s.focus(),!d&&this.setRangeAtStartEnd(!1,s),0===i.dropdown.enabled&&!d&&this.dropdown.show(),this.state.hasFocus=!0,this}else st.warn("Cannot find element in Tag template: .",i.classNames.tagTextSelector)},editTagToggleValidity:function(t,e){var n;if(e=e||Tt(t))return(n=!("__isValid"in e)||!0===e.__isValid)||this.removeTagsFromValue(t),this.update(),t.classList.toggle(this.settings.classNames.tagNotAllowed,!n),e.__isValid=n,e.__isValid;st.warn("tag has no data: ",t,e)},onEditTagDone:function(t,e){t=t||this.state.editing.scope,e=e||{};var n,i,s=this.settings,a={tag:t,index:this.getNodeIndex(t),previousData:Tt(t),data:e};this.trigger("edit:beforeUpdate",a,{cloneData:!1}),this.state.editing=!1,delete e.__originalData,delete e.__originalHTML,t&&t.parentNode&&((void 0!==(i=e[s.tagTextProp])?null===(n=(i+="").trim)||void 0===n?void 0:n.call(i):s.tagTextProp in e?void 0:e.value)?(t=this.replaceTag(t,e),this.editTagToggleValidity(t,e),s.a11y.focusableTags?t.focus():"select"!=s.mode&&St(t)):this.removeTags(t)),this.trigger("edit:updated",a),s.dropdown.closeOnSelect&&this.dropdown.hide(),this.settings.keepInvalidTags&&this.reCheckInvalidTags()},replaceTag:function(t,e){e&&""!==e.value&&void 0!==e.value||(e=t.__tagifyTagData),e.__isValid&&1!=e.__isValid&&ht(e,this.getInvalidTagAttrs(e,e.__isValid));var n=this.createTagElem(e);return t.parentNode.replaceChild(n,t),this.updateValueByDOMTags(),n},updateValueByDOMTags:function(){var t=this;this.value.length=0;var e=this.settings.classNames,n=[e.tagNotAllowed.split(" ")[0],e.tagHide];[].forEach.call(this.getTagElms(),(function(e){Xt(e.classList).some((function(t){return n.includes(t)}))||t.value.push(Tt(e))})),this.update(),this.dropdown.refilter()},injectAtCaret:function(t,e){var n;if(e=e||(null===(n=this.state.selection)||void 0===n?void 0:n.range),"string"==typeof t&&(t=document.createTextNode(t)),!e&&t)return this.appendMixTags(t),this;var i=bt(t,e);return this.setRangeAtStartEnd(!1,i),this.updateValueByDOMTags(),this.update(),this},input:{set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this.settings,i=n.dropdown.closeOnSelect;this.state.inputText=t,e&&(this.DOM.input.innerHTML=ct(""+t),t&&this.toggleClass(n.classNames.empty,!this.DOM.input.innerHTML)),!t&&i&&this.dropdown.hide.bind(this),this.input.autocomplete.suggest.call(this),this.input.validate.call(this)},raw:function(){return this.DOM.input.textContent},validate:function(){var t=!this.state.inputText||!0===this.validateTag({value:this.state.inputText});return this.DOM.input.classList.toggle(this.settings.classNames.inputInvalid,!t),t},normalize:function(t,e){var n=t||this.DOM.input,i=[];n.childNodes.forEach((function(t){return 3==t.nodeType&&i.push(t.nodeValue)})),i=i.join("\n");try{i=i.replace(/(?:\r\n|\r|\n)/g,this.settings.delimiters.source.charAt(0))}catch(t){}return i=i.replace(/\s/g," "),(null==e?void 0:e.trim)?this.trim(i):i},autocomplete:{suggest:function(t){if(this.settings.autoComplete.enabled){"object"!=typeof(t=t||{value:""})&&(t={value:t});var e=this.dropdown.getMappedValue(t);if("number"!=typeof e){var n=this.state.inputText.toLowerCase(),i=e.substr(0,this.state.inputText.length).toLowerCase(),s=e.substring(this.state.inputText.length);e&&this.state.inputText&&i==n?(this.DOM.input.setAttribute("data-suggest",s),this.state.inputSuggestion=t):(this.DOM.input.removeAttribute("data-suggest"),delete this.state.inputSuggestion)}}},set:function(t){var e=this.DOM.input.getAttribute("data-suggest"),n=t||(e?this.state.inputText+e:null);return!!n&&("mix"==this.settings.mode?this.replaceTextWithNode(document.createTextNode(this.state.tag.prefix+n)):(this.input.set.call(this,n),this.setRangeAtStartEnd(!1,this.DOM.input)),this.input.autocomplete.suggest.call(this),this.dropdown.hide(),!0)}}},getTagIdx:function(t){return this.value.findIndex((function(e){return e.__tagId==(t||{}).__tagId}))},getNodeIndex:function(t){var e=0;if(t)for(;t=t.previousElementSibling;)e++;return e},getTagElms:function(){for(var t=arguments.length,e=new Array(t),n=0;n=this.settings.maxTags&&this.TEXTS.exceed},setReadonly:function(t,e){var n=this.settings;this.DOM.scope.contains(document.activeElement)&&document.activeElement.blur(),n[e||"readonly"]=t,this.DOM.scope[(t?"set":"remove")+"Attribute"](e||"readonly",!0),this.settings.userInput=!0,this.setContentEditable(!t)},setContentEditable:function(t){this.DOM.input.contentEditable=t,this.DOM.input.tabIndex=t?0:-1},setDisabled:function(t){this.setReadonly(t,"disabled")},normalizeTags:function(t){var e=this,n=this.settings,i=n.whitelist,s=n.delimiters,a=n.mode,o=n.tagTextProp,r=[],l=!!i&&zt(i[0],Object),d=Array.isArray(t),c=d&&t[0].value,u=function(t){return(t+"").split(s).reduce((function(t,n){var i,s=e.trim(n);return s&&t.push((Wt(i={},o,s),Wt(i,"value",s),i)),t}),[])};if("number"==typeof t&&(t=t.toString()),"string"==typeof t){if(!t.trim())return[];t=u(t)}else d&&(t=t.reduce((function(t,n){if(ut(n)){var i=ht({},n);o in i||(o="value"),i[o]=e.trim(i[o]),(i[o]||0===i[o])&&t.push(i)}else if(null!=n&&""!==n&&void 0!==n){var s;(s=t).push.apply(s,Xt(u(n)))}return t}),[]));return l&&!c&&(t.forEach((function(t){var n=r.map((function(t){return t.value})),i=e.dropdown.filterListItems.call(e,t[o],{exact:!0});e.settings.duplicates||(i=i.filter((function(t){return!n.includes(t.value)})));var s=i.length>1?e.getWhitelistItem(t[o],o,i):i[0];s&&zt(s,Object)?r.push(s):"mix"!=a&&(null==t.value&&(t.value=t[o]),r.push(t))})),r.length&&(t=r)),t},parseMixTags:function(t){var e=this,n=this.settings,i=n.mixTagsInterpolator,s=n.duplicates,a=n.transformTag,o=n.enforceWhitelist,r=n.maxTags,l=n.tagTextProp,d=[];t=t.split(i[0]).map((function(t,n){var c,u,h,g=t.split(i[1]),p=g[0],f=d.length==r;try{if(p==+p)throw Error;u=JSON.parse(p)}catch(t){u=e.normalizeTags(p)[0]||{value:p}}if(a.call(e,u),f||!(g.length>1)||o&&!e.isTagWhitelisted(u.value)||!s&&e.isTagDuplicate(u.value)){if(t)return n?i[0]+t:t}else u[c=u[l]?l:"value"]=e.trim(u[c]),h=e.createTagElem(u),d.push(u),h.classList.add(e.settings.classNames.tagNoAnimation),g[0]=h.outerHTML,e.value.push(u);return g.join("")})).join(""),this.DOM.input.innerHTML=t,this.DOM.input.appendChild(document.createTextNode("")),this.DOM.input.normalize();var c=this.getTagElms();return c.forEach((function(t,e){return Tt(t,d[e])})),this.update({withoutChangeEvent:!0}),Et(c,this.state.hasFocus),t},replaceTextWithNode:function(t,e){if(this.state.tag||e){e=e||this.state.tag.prefix+this.state.tag.value;var n,i,s=this.state.selection||window.getSelection(),a=s.anchorNode,o=this.state.tag.delimiters?this.state.tag.delimiters.length:0;return a.splitText(s.anchorOffset-o),-1==(n=a.nodeValue.lastIndexOf(e))||(i=a.splitText(n),t&&a.parentNode.replaceChild(t,i)),!0}},prepareNewTagNode:function(t,e){e=e||{};var n=this.settings,i=[],s={},a=Object.assign({},t,{value:t.value+""});if(t=Object.assign({},a),n.transformTag.call(this,t),t.__isValid=this.hasMaxTags()||this.validateTag(t),!0!==t.__isValid){if(e.skipInvalid)return;if(ht(s,this.getInvalidTagAttrs(t,t.__isValid),{__preInvalidData:a}),t.__isValid==this.TEXTS.duplicate&&this.flashTag(this.getTagElmByValue(t.value)),!n.createInvalidTags)return void i.push(t.value)}return"readonly"in t&&(t.readonly?s["aria-readonly"]=!0:delete t.readonly),{tagElm:this.createTagElem(t,s),tagData:t,aggregatedInvalidInput:i}},postProcessNewTagNode:function(t,e){var n=this,i=this.settings,s=e.__isValid;s&&!0===s?this.value.push(e):(this.trigger("invalid",{data:e,index:this.value.length,tag:t,message:s}),i.keepInvalidTags||setTimeout((function(){return n.removeTags(t,!0)}),1e3)),this.dropdown.position()},selectTag:function(t,e){var n=this;if(!this.settings.enforceWhitelist||this.isTagWhitelisted(e.value)){this.state.actions.selectOption&&setTimeout((function(){return n.setRangeAtStartEnd(!1,n.DOM.input)}));var i=this.getLastTag();return i?this.replaceTag(i,e):this.appendTag(t),this.value[0]=e,this.update(),this.trigger("add",{tag:t,data:e}),[t]}},addEmptyTag:function(t){var e=ht({value:""},t||{}),n=this.createTagElem(e);Tt(n,e),this.appendTag(n),this.editTag(n,{skipValidation:!0}),this.toggleFocusClass(!0)},addTags:function(t,e,n){var i=this,s=[],a=this.settings,o=[],r=document.createDocumentFragment(),l=[];if(!t||0==t.length)return s;switch(t=this.normalizeTags(t),a.mode){case"mix":return this.addMixTags(t);case"select":e=!1,this.removeAllTags()}return this.DOM.input.removeAttribute("style"),t.forEach((function(t){var e=i.prepareNewTagNode(t,{skipInvalid:n||a.skipInvalid});if(e){var d=e.tagElm;if(t=e.tagData,o=e.aggregatedInvalidInput,s.push(d),"select"==a.mode)return i.selectTag(d,t);r.appendChild(d),i.postProcessNewTagNode(d,t),l.push({tagElm:d,tagData:t})}})),this.appendTag(r),l.forEach((function(t){var e=t.tagElm,n=t.tagData;return i.trigger("add",{tag:e,index:i.getTagIdx(n),data:n})})),this.update(),t.length&&e&&(this.input.set.call(this,a.createInvalidTags?"":o.join(a._delimiters)),this.setRangeAtStartEnd(!1,this.DOM.input)),this.dropdown.refilter(),s},addMixTags:function(t){var e=this;if((t=this.normalizeTags(t))[0].prefix||this.state.tag)return this.prefixedTextToTag(t[0]);var n=document.createDocumentFragment();return t.forEach((function(t){var i=e.prepareNewTagNode(t);n.appendChild(i.tagElm),e.insertAfterTag(i.tagElm),e.postProcessNewTagNode(i.tagElm,i.tagData)})),this.appendMixTags(n),n.children},appendMixTags:function(t){var e=!!this.state.selection;e?this.injectAtCaret(t):(this.DOM.input.focus(),(e=this.setStateSelection()).range.setStart(this.DOM.input,e.range.endOffset),e.range.setEnd(this.DOM.input,e.range.endOffset),this.DOM.input.appendChild(t),this.updateValueByDOMTags(),this.update())},prefixedTextToTag:function(t){var e,n,i,s=this,a=this.settings,o=null===(e=this.state.tag)||void 0===e?void 0:e.delimiters;if(t.prefix=t.prefix||this.state.tag?this.state.tag.prefix:(a.pattern.source||a.pattern)[0],i=this.prepareNewTagNode(t),n=i.tagElm,this.replaceTextWithNode(n)||this.DOM.input.appendChild(n),setTimeout((function(){return n.classList.add(s.settings.classNames.tagNoAnimation)}),300),this.update(),!o){var r=this.insertAfterTag(n)||n;setTimeout(St,0,r)}return this.state.tag=null,this.postProcessNewTagNode(n,i.tagData),n},appendTag:function(t){var e=this.DOM,n=e.input;e.scope.insertBefore(t,n)},createTagElem:function(t,e){t.__tagId=mt();var n,i=ht({},t,Kt({value:ct(t.value+"")},e));return function(t){for(var e,n=document.createNodeIterator(t,NodeFilter.SHOW_TEXT,null,!1);e=n.nextNode();)e.textContent.trim()||e.parentNode.removeChild(e)}(n=this.parseTemplate("tag",[i,this])),Tt(n,t),n},reCheckInvalidTags:function(){var t=this,e=this.settings;this.getTagElms(e.classNames.tagNotAllowed).forEach((function(n,i){var s=Tt(n),a=t.hasMaxTags(),o=t.validateTag(s),r=!0===o&&!a;if("select"==e.mode&&t.toggleScopeValidation(o),r)return s=s.__preInvalidData?s.__preInvalidData:{value:s.value},t.replaceTag(n,s);n.title=a||o}))},removeTags:function(t,e,n){var i,s=this,a=this.settings;if(t=t&&zt(t,HTMLElement)?[t]:zt(t,Array)?t:t?[t]:[this.getLastTag()].filter((function(t){return t})),i=t.reduce((function(t,e){e&&"string"==typeof e&&(e=s.getTagElmByValue(e));var n=Tt(e);return e&&n&&!n.readonly&&t.push({node:e,idx:s.getTagIdx(n),data:Tt(e,{__removed:!0})}),t}),[]),n="number"==typeof n?n:this.CSSVars.tagHideTransition,"select"==a.mode&&(n=0,this.input.set.call(this)),1==i.length&&"select"!=a.mode&&i[0].node.classList.contains(a.classNames.tagNotAllowed)&&(e=!0),i.length)return a.hooks.beforeRemoveTag(i,{tagify:this}).then((function(){var t=function(t){t.node.parentNode&&(t.node.parentNode.removeChild(t.node),e?a.keepInvalidTags&&this.trigger("remove",{tag:t.node,index:t.idx}):(this.trigger("remove",{tag:t.node,index:t.idx,data:t.data}),this.dropdown.refilter(),this.dropdown.position(),this.DOM.input.normalize(),a.keepInvalidTags&&this.reCheckInvalidTags()))};n&&n>10&&1==i.length?function(e){e.node.style.width=parseFloat(window.getComputedStyle(e.node).width)+"px",document.body.clientTop,e.node.classList.add(a.classNames.tagHide),setTimeout(t.bind(this),n,e)}.call(s,i[0]):i.forEach(t.bind(s)),e||(s.removeTagsFromValue(i.map((function(t){return t.node}))),s.update(),"select"==a.mode&&a.userInput&&s.setContentEditable(!0))})).catch((function(t){}))},removeTagsFromDOM:function(){this.getTagElms().forEach((function(t){return t.remove()}))},removeTagsFromValue:function(t){var e=this;(t=Array.isArray(t)?t:[t]).forEach((function(t){var n=Tt(t),i=e.getTagIdx(n);i>-1&&e.value.splice(i,1)}))},removeAllTags:function(t){var e=this;t=t||{},this.value=[],"mix"==this.settings.mode?this.DOM.input.innerHTML="":this.removeTagsFromDOM(),this.dropdown.refilter(),this.dropdown.position(),this.state.dropdown.visible&&setTimeout((function(){e.DOM.input.focus()})),"select"==this.settings.mode&&(this.input.set.call(this),this.settings.userInput&&this.setContentEditable(!0)),this.update(t)},postUpdate:function(){this.state.blockChangeEvent=!1;var t,e,n=this.settings,i=n.classNames,s="mix"==n.mode?n.mixMode.integrated?this.DOM.input.textContent:this.DOM.originalInput.value.trim():this.value.length+this.input.raw.call(this).length;this.toggleClass(i.hasMaxTags,this.value.length>=n.maxTags),this.toggleClass(i.hasNoTags,!this.value.length),this.toggleClass(i.empty,!s),"select"==n.mode&&this.toggleScopeValidation(null===(e=this.value)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.__isValid)},setOriginalInputValue:function(t){var e=this.DOM.originalInput;this.settings.mixMode.integrated||(e.value=t,e.tagifyValue=e.value,this.setPersistedData(t,"value"))},update:function(t){clearTimeout(this.debouncedUpdateTimeout),this.debouncedUpdateTimeout=setTimeout(function(){var e=this.getInputValue();this.setOriginalInputValue(e),this.settings.onChangeAfterBlur&&(t||{}).withoutChangeEvent||this.state.blockChangeEvent||this.triggerChangeEvent(),this.postUpdate()}.bind(this),100),this.events.bindOriginaInputListener.call(this,100)},getInputValue:function(){var t=this.getCleanValue();return"mix"==this.settings.mode?this.getMixedTagsAsString(t):t.length?this.settings.originalInputValueFormat?this.settings.originalInputValueFormat(t):JSON.stringify(t):""},getCleanValue:function(t){return ot(t||this.value,this.dataProps)},getMixedTagsAsString:function(){var t="",e=this,n=this.settings,i=n.originalInputValueFormat||JSON.stringify,s=n.mixTagsInterpolator;return function n(a){a.childNodes.forEach((function(a){if(1==a.nodeType){var o=Tt(a);if("BR"==a.tagName&&(t+="\r\n"),o&&vt.call(e,a)){if(o.__removed)return;t+=s[0]+i(rt(o,e.dataProps))+s[1]}else a.getAttribute("style")||["B","I","U"].includes(a.tagName)?t+=a.textContent:"DIV"!=a.tagName&&"P"!=a.tagName||(t+="\r\n",n(a))}else t+=a.textContent}))}(this.DOM.input),t}},Jt.prototype.removeTag=Jt.prototype.removeTags;const Zt="radio-field-input",te="multi-select-field-input";class ee{#U;#W;#z;#K;#X;#J;#Q;#G;#Y;#Z;#tt;#et;#nt;#it;#st;#at;#ot;#rt=null;#lt;#dt;#ct;#ut;#ht;#gt=null;#pt=null;constructor(t,e,n,i,s,a,o,r,l,d,c,u,h,g,p,f,m,v,y){this.#U=t,this.#Z=o,this.#W=r,this.#z=l,this.#K=d,this.#X=c,this.#nt=u,this.#it=h,this.#st=g,this.#at=y,this.#lt=e,this.#dt=n,this.#ct=i,this.#ut=s,this.#ht=a,this.#ot=this.#at.innerHTML,this.#Y=p,this.#J=f,this.#Q=m,this.#G=v,this.#et=!1,this.#tt=!1,this.isAsync()&&(this.clearOptionElements(),this.loadOptionsDataSourceValues().then((()=>{this.#st.style.display="none"}))),this.#W.addEventListener("input",(t=>{this.isAsync()?this.handleOptionsDataSource(t.target).then((()=>{this.filterItemsSearch(t)})):this.filterItemsSearch(t)})),this.#Y.addEventListener("click",(()=>{this.setFiltered(!1)})),this.#J.addEventListener("click",(()=>{this.isAsync()&&(this.#W.value="",this.clearOptionElements()),this.toggleVisibility()})),"radio-field-input"===this.#z&&this.#X.forEach((t=>{t.addEventListener("change",(()=>{this.scrollListToTop()}))}))}isAsync(){return null!==this.#lt&&void 0!==this.#lt}isEngaged(){return this.#et}isFiltered(){return this.#tt}setFiltered(t){this.#tt!==t&&(this.#tt=t,t?(this.#Y.style.removeProperty("display"),this.#at.style.removeProperty("display")):(this.#W.value="",this.#Y.style.display="none",this.#at.style.display="none",this.#nt.style.display="none",this.#ft()))}toggleVisibility(){this.isEngaged()?(this.#et=!1,this.#U.classList.remove("engaged"),this.setFiltered(!1),this.#J.setAttribute("aria-expanded","false"),this.#Q.style.removeProperty("display"),this.#G.style.display="none",this.#it.classList.add("hidden")):(this.#et=!0,this.#U.classList.add("engaged"),this.#J.setAttribute("aria-expanded","true"),this.#Q.style.display="none",this.#G.style.removeProperty("display"),this.isAsync()&&this.#it.classList.remove("hidden"))}#mt(t){this.#U.ownerDocument.defaultView.clearTimeout(this.#rt),this.#rt=this.#U.ownerDocument.defaultView.setTimeout((()=>{this.#at.textContent="",this.#U.ownerDocument.defaultView.requestAnimationFrame((()=>{this.#at.textContent=t}))}),500)}#vt(t){const e=$(this.#ot,t);this.#mt(e)}loadOptionsDataSourceValues(){return new Promise(((t,e)=>{"string"==typeof this.#ht||this.#ht instanceof String||this.#ht instanceof Array?this.fetchDataSource(new Map([[this.#ct,this.#ht]])).then((n=>{n&&n instanceof Array?(n.forEach((t=>{this.#K.append(this.optionsDataSourceDataToElement(t,!0))})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),t()):e()})):t()})).catch((t=>{if(t instanceof Error)throw t}))}handleOptionsDataSource(t){return this.#pt instanceof AbortController&&this.#pt.abort(),this.#pt=new AbortController,void 0!==this.#gt&&(clearTimeout(this.#gt),this.#gt=void 0),new Promise(((e,n)=>{if(t.value.length{const i=t.value;return this.fetchDataSource(new Map([[this.#dt,i]]),this.#pt.signal).then((t=>{t&&t instanceof Array?(this.clearOptionElements(),t.forEach((t=>{const e=this.optionsDataSourceDataToElement(t);this.#K.querySelector(`[data-value='${e.dataset.value}'][data-display='${e.dataset.display}']`)||this.#K.append(e)})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item"),e(),this.#st.style.display="none"):n(new Error("Invalid data received from data source fetch"))}))}),200)})).catch((t=>{if(t instanceof Error)throw t}))}fetchDataSource(t,e=null){const n=new URL(this.#lt,document.location);t.forEach(((t,e)=>{t instanceof Array?t.forEach((t=>{n.searchParams.append(`${e}[]`,t)})):n.searchParams.set(e,t)}));const i={};return e instanceof AbortController&&(i.signal=e.signal),fetch(n,i).then((t=>t.json())).catch((()=>{}))}clearOptionElements(t=!1){Array.from(this.#K.children).forEach((e=>{if(t)this.#K.removeChild(e);else{const t=e.querySelector("input");t&&t.checked||this.#K.removeChild(e)}})),this.#X=this.#K.querySelectorAll(".c-field--has-option-filter__item")}optionsDataSourceDataToElement(t,e=!1){const n=Math.random().toString(16).slice(2),i=document.createElement("input");i.id=n,i.value=t.value;const s=document.createElement("label");let a;switch(s.htmlFor=n,this.#z){case Zt:a=document.createElement("div"),a.className="c-field-radio__item c-field--has-option-filter__item",i.type="radio",i.name=this.#U.dataset.ilUiInputName,s.innerText=t.display,a.append(i),a.append(s);break;case te:a=document.createElement("li"),a.className="c-field--has-option-filter__item",i.type="checkbox",i.name=`${this.#U.dataset.ilUiInputName}[]`;const e=document.createElement("span");e.className="c-field-multiselect__label-text",e.innerText=t.display,s.append(i),s.append(e),a.append(s);break;default:throw new Error(`Unsupported list type '${this.#z}' received`)}return i.checked=e,a.dataset.value=t.value,a.dataset.display=t.display,a.dataset.searchBy=t.searchBy,a}filterItemsSearch(t){const e=t.target.value.toLowerCase();this.setFiltered(!!e);let n=0,i=!1;this.#X.forEach((t=>{t.textContent.toLowerCase().includes(e)?(n+=1,i=!0,ne(t)):function(t){t.style.display="none"}(t)})),this.#vt(n.toString()),""!==e&&!1===i?this.#nt.style.removeProperty("display"):(""===e||i)&&(this.#nt.style.display="none")}#ft(){this.#X.forEach((t=>ne(t)))}scrollListToTop(){this.#Z.scrollTo({top:0,behavior:"smooth"})}}function ne(t){t.style.removeProperty("display")}class ie{#V=new Map;init(t,e="",n="term",i="display_value",s=3,a=""){if(void 0===t)throw new TypeError("During init of an InputHasOptionFilter an undefined element was passed to the factory.");if(this.#V.has(t.id))throw new Error(`A InputHasOptionFilter with id '${t.id}' has already been initialized.`);const o=t,r=o.querySelector(".c-input--has-option-filter__field"),l=o.querySelector(".c-input--has-option-filter__search-input input"),d=o.getAttribute("data-il-ui-component"),c=o.querySelector(".c-field--has-option-filter__list"),u=c.querySelectorAll(".c-field--has-option-filter__item"),h=o.querySelector(".message-no-match"),g=o.querySelector(".message-async-start-search"),p=o.querySelector('.c-input--has-option-filter__synopsis [role="status"]'),f=o.querySelector(".c-input--has-option-filter__loader"),m=o.querySelector(".c-input--has-option-filter__clear-search"),v=o.querySelector(".c-input--has-option-filter__visibility-toggle"),y=v.querySelector(".text-expand"),w=v.querySelector(".text-collapse"),b=new ee(t,""===e?null:e,n,i,s,JSON.parse(a),r,l,d,c,u,h,g,f,m,v,y,w,p);return this.#V.set(t.id,b),b}get(t){return this.#V.has(t)?this.#V.get(t):null}}var se;e.UI=e.UI||{},e.UI.Input=e.UI.Input||{},(se=e.UI.Input).textarea=new o,se.mustacheVariables={init:(t,e)=>function(t,e){e.querySelectorAll(".c-input--has-mustache-variables__definitions > li > a").forEach((e=>{const n=function(t){const e=t.textContent.match(/^\s*\{\{([^}]+)\}\}\s*$/);return e?e[1].trim():null}(e);e.addEventListener("click",(()=>{t.insertCharactersAroundSelection(`{{${n}}}`,"")}))}))}(t,e)},se.markdown=new y,se.optionFilter=new ie,se.treeSelect=new Z(new tt(t),e.UI.menu.drilldown,{txt:t=>e.Language.txt(t)},n),se.tagInput=se.tag||{},se.tagInput.init=(t,e,n,i,s)=>Yt(Jt,t,e,n,i,s)}($,il,document); diff --git a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js index 40570f2cc622..18c876ea8814 100644 --- a/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js +++ b/components/ILIAS/UI/resources/js/Input/Field/src/OptionFilter/OptionFilterFactory.js @@ -27,17 +27,17 @@ export default class OptionFilterFactory { * @param {string} optionsDataSourceToken * @param {string} optionsDataSourceDisplayValueToken * @param {number} optionsDataSourceSuggestionStart - * @param {string} selectedValue + * @param {null|string} selectedValue * @return {OptionFilter} * @throws {Error} if the input was already initialized. */ init( inputFieldWithOptionFilter, - optionsDataSource, - optionsDataSourceToken, - optionsDataSourceDisplayValueToken, - optionsDataSourceSuggestionStart, - selectedValue, + optionsDataSource = '', + optionsDataSourceToken = 'term', + optionsDataSourceDisplayValueToken = 'display_value', + optionsDataSourceSuggestionStart = 3, + selectedValue = null, ) { if (inputFieldWithOptionFilter === undefined) { throw new TypeError('During init of an InputHasOptionFilter an undefined element was passed to the factory.');