{"version":3,"sources":["components/tagify.js"],"names":["dmx","Component","extends","initialData","items","values","attributes","settings","type","Object","default","data","Array","tagValue","String","tagText","tagSecondary","tagImage","tagClass","tagCount","tagReadonly","nocustom","Boolean","readonly","delimiters","duplicates","noinput","maxTags","Number","Infinity","loading","mode","notrim","noautocomplete","keepInvalid","skipInvalid","minChars","caseSensitive","maxItems","noFuzzySearch","noAccentedSearch","dropdownPosition","enum","highlightFirst","noCloseOnSelect","pattern","dragsort","methods","addEmptyTag","this","_tagify","addTags","tags","clear","skipInvalids","_updateData","removeTags","removeAllTags","events","change","Event","add","remove","invalid","input","focus","blur","noresults","init","node","_formdataHandler","bind","_transformTag","tag","class","count","image","__dmx","__item","found","_whitelist","find","value","label","assign","prototype","call","form","addEventListener","destroy","$node","removeEventListener","render","Tagify","enforceWhitelist","props","whitelist","tagTextProp","userInput","trim","keepInvalidTags","startsWith","RegExp","replace","autoComplete","enabled","rightKey","dropdown","searchKeys","fuzzySearch","accentedSearch","position","closeOnSelect","originalInputValueFormat","map","join","transformTag","templates","_templates","setDisabled","setReadonly","on","dispatchEvent","detail","item","isCustom","message","isValid","set","_setDragSort","performUpdate","updatedProps","has","disabled","_setValue","getTagElms","forEach","tagData","getSetTagData","replaceTag","enable","_dragsort","window","DragSort","DOM","scope","selector","classNames","callbacks","dragEnd","updateValueByDOMTags","console","warn","getCleanValue","wrapper","_s","namespace","className","required","hasAttribute","getAttribute","placeholder","title","a11y","focusableTags","style","tagX","dropdownItem","getComputedStyle","originalInput","gap","getPropertyValue","img_size","text_color","sec_color","sec_size","count_color","secondary","defaultValue","loadOriginalValues","isArray","DataScope","parse","event","formData","_name","name","delete","slice","append","_resetHandler"],"mappings":";;;;;;AAAAA,IAAAC,UAAA,SAAA,CAEAC,QAAA,eAEAC,YAAA,CACAC,MAAA,GACAC,OAAA,IAGAC,WAAA,CACAC,SAAA,CACAC,KAAAC,OACAC,QAAA,CAAA,GAGAC,KAAA,CACAH,KAAAI,MACAF,QAAA,MAGAG,SAAA,CACAL,KAAAM,OACAJ,QAAA,UAGAK,QAAA,CACAP,KAAAM,OACAJ,QAAA,UAGAM,aAAA,CACAR,KAAAM,OACAJ,QAAA,MAGAO,SAAA,CACAT,KAAAM,OACAJ,QAAA,MAGAQ,SAAA,CACAV,KAAAM,OACAJ,QAAA,MAGAS,SAAA,CACAX,KAAAM,OACAJ,QAAA,MAGAU,YAAA,CACAZ,KAAAM,OACAJ,QAAA,MAGAW,SAAA,CACAb,KAAAc,QACAZ,SAAA,GAGAa,SAAA,CACAf,KAAAc,QACAZ,SAAA,GAGAc,WAAA,CACAhB,KAAAM,OACAJ,QAAA,KAGAe,WAAA,CACAjB,KAAAc,QACAZ,SAAA,GAGAgB,QAAA,CACAlB,KAAAc,QACAZ,SAAA,GAGAiB,QAAA,CACAnB,KAAAoB,OACAlB,QAAAmB,KAGAC,QAAA,CACAtB,KAAAc,QACAZ,SAAA,GAGAqB,KAAA,CACAvB,KAAAM,OACAJ,QAAA,MAGAsB,OAAA,CACAxB,KAAAc,QACAZ,SAAA,GAGAuB,eAAA,CACAzB,KAAAc,QACAZ,SAAA,GAGAwB,YAAA,CACA1B,KAAAc,QACAZ,SAAA,GAGAyB,YAAA,CACA3B,KAAAc,QACAZ,SAAA,GAGA0B,SAAA,CACA5B,KAAAoB,OACAlB,QAAA,GAGA2B,cAAA,CACA7B,KAAAc,QACAZ,SAAA,GAGA4B,SAAA,CACA9B,KAAAoB,OACAlB,QAAA,IAGA6B,cAAA,CACA/B,KAAAc,QACAZ,SAAA,GAGA8B,iBAAA,CACAhC,KAAAc,QACAZ,SAAA,GAGA+B,iBAAA,CACAjC,KAAAM,OACAJ,QAAA,MACAgC,KAAA,CAAA,MAAA,OAAA,UAGAC,eAAA,CACAnC,KAAAc,QACAZ,SAAA,GAGAkC,gBAAA,CACApC,KAAAc,QACAZ,SAAA,GAGAmC,QAAA,CACArC,KAAAM,OACAJ,QAAA,MAGAoC,SAAA,CACAtC,KAAAc,QACAZ,SAAA,IAIAqC,QAAA,CACAC,cACAC,KAAAC,QAAAF,aACA,EAEAG,QAAAC,EAAAC,EAAAC,GACAL,KAAAC,QAAAC,QAAAC,EAAAC,EAAAC,GACAL,KAAAM,aACA,EAEAC,WAAAJ,GACAH,KAAAC,QAAAM,WAAAJ,GACAH,KAAAM,aACA,EAEAE,gBACAR,KAAAC,QAAAO,gBACAR,KAAAM,aACA,GAGAG,OAAA,CACAC,OAAAC,MACAC,IAAAD,MACAE,OAAAF,MACAG,QAAAH,MACAI,MAAAJ,MACAK,MAAAL,MACAM,KAAAN,MACAO,UAAAP,OAGAQ,KAAAC,GACApB,KAAAqB,iBAAArB,KAAAqB,iBAAAC,KAAAtB,MACAA,KAAAM,YAAAN,KAAAM,YAAAgB,KAAAtB,MAEAA,KAAAuB,cAAAC,WACAA,EAAAC,aACAD,EAAAE,aACAF,EAAAG,aACAH,EAAAI,aACAJ,EAAAK,OAEA,MAAAC,EAAA9B,KAAA+B,aAAAC,MAAAtE,GAAAA,EAAAuE,OAAAT,EAAAS,OAAAvE,EAAAwE,OAAAV,EAAAS,QAEAH,GACAtE,OAAA2E,OAAAX,EAAAM,EACA,EAGA/E,IAAAC,UAAA,gBAAAoF,UAAAjB,KAAAkB,KAAArC,KAAAoB,GAEAA,EAAAkB,MACAlB,EAAAkB,KAAAC,iBAAA,WAAAvC,KAAAqB,iBAEA,EAEAmB,UACAzF,IAAAC,UAAA,gBAAAoF,UAAAI,QAAAH,KAAArC,MAEAA,KAAAyC,MAAAH,MACAtC,KAAAyC,MAAAH,KAAAI,oBAAA,WAAA1C,KAAAqB,kBAGArB,KAAAC,QAAAuC,SACA,EAEAG,OAAAvB,GACApB,KAAAC,QAAA,IAAA2C,OAAAxB,EAAA,CACAyB,iBAAA7C,KAAA8C,MAAA1E,SACA2E,UAAA/C,KAAA+B,aACAiB,YAAA,QACAzE,WAAAyB,KAAA8C,MAAAvE,WACAC,WAAAwB,KAAA8C,MAAAtE,WACAyE,WAAAjD,KAAA8C,MAAArE,QACAC,QAAAsB,KAAA8C,MAAApE,QACAI,KAAAkB,KAAA8C,MAAAhE,KACAoE,MAAAlD,KAAA8C,MAAA/D,OACAoE,gBAAAnD,KAAA8C,MAAA7D,YACAC,YAAAc,KAAA8C,MAAA5D,YACAU,QAAAI,KAAA8C,MAAAlD,SAAAI,KAAA8C,MAAAlD,QAAAwD,WAAA,KAAA,IAAAC,OAAArD,KAAA8C,MAAAlD,QAAA0D,QAAA,UAAA,KAAAtD,KAAA8C,MAAAlD,QACA2D,aAAA,CACAC,SAAAxD,KAAA8C,MAAA9D,eACAyE,UAAAzD,KAAA8C,MAAA9D,gBAEA0E,SAAA,CACAF,QAAAxD,KAAA8C,MAAA3D,UAAA,GAAAa,KAAA8C,MAAA3D,SACAwE,WAAA,CAAA,SACAvE,cAAAY,KAAA8C,MAAA1D,cACAC,SAAAW,KAAA8C,MAAAzD,SACAuE,aAAA5D,KAAA8C,MAAAxD,cACAuE,gBAAA7D,KAAA8C,MAAAvD,iBACAuE,SAAA9D,KAAA8C,MAAAtD,iBACAE,eAAAM,KAAA8C,MAAApD,eACAqE,eAAA/D,KAAA8C,MAAAnD,iBAEAqE,yBAAA7D,GAAAA,EAAA8D,KAAAzC,GAAAA,EAAAS,QAAAiC,KAAAlE,KAAA8C,MAAAvE,WAAA,IACA4F,aAAAnE,KAAAuB,cACA6C,UAAApE,KAAAqE,cACArE,KAAA8C,MAAAxF,WAGA0C,KAAA8C,MAAA1E,WAAA4B,KAAA8C,MAAApF,MACAsC,KAAAC,QAAApB,SAAA,GACAmB,KAAAC,QAAAqE,aAAA,IAEAtE,KAAAC,QAAApB,QAAAmB,KAAA8C,MAAAjE,SAGAmB,KAAAC,QAAAsE,YAAAvE,KAAA8C,MAAAxE,UAEA0B,KAAAC,QAAAuE,GAAA,UAAA,IAAAxE,KAAAyE,cAAA,YACAzE,KAAAC,QAAAuE,GAAA,SAAA,IAAAxE,KAAAyE,cAAA,WACAzE,KAAAC,QAAAuE,GAAA,QAAA,IAAAxE,KAAAyE,cAAA,UAEAzE,KAAAC,QAAAuE,GAAA,OAAA,EAAAE,aACA1E,KAAAyE,cAAA,MAAA,KAAA,CACAE,KAAAD,EAAAhH,KAAAmE,OACAI,MAAAyC,EAAAhH,KAAAuE,MACA2C,UAAAF,EAAAhH,KAAAmE,QACA,IAGA7B,KAAAC,QAAAuE,GAAA,UAAA,EAAAE,aACA1E,KAAAyE,cAAA,SAAA,KAAA,CACAE,KAAAD,EAAAhH,KAAAmE,OACAI,MAAAyC,EAAAhH,KAAAuE,MACA2C,SAAAF,EAAAhH,KAAAmE,QACA,IAGA7B,KAAAC,QAAAuE,GAAA,WAAA,EAAAE,aACA1E,KAAAyE,cAAA,UAAA,KAAA,CACAxC,MAAAyC,EAAAhH,KAAAuE,MACA4C,QAAAH,EAAAG,SACA,IAGA7E,KAAAC,QAAAuE,GAAA,SAAA,EAAAE,aACA1E,KAAAyE,cAAA,QAAA,KAAA,CACAxC,MAAAyC,EAAAzC,MACA6C,QAAAJ,EAAAI,SACA,IAGA9E,KAAAC,QAAAuE,GAAA,oBAAA,EAAAE,aACA1E,KAAAyE,cAAA,YAAA,KAAA,CACAxC,MAAAyC,EAAAzC,OACA,IAGAjC,KAAAC,QAAAuE,GAAA,SAAAxE,KAAAM,aACAN,KAAAC,QAAAuE,GAAA,SAAA,IAAAxE,KAAA+E,IAAA,WAAA,KACA/E,KAAAC,QAAAuE,GAAA,QAAA,IAAAxE,KAAA+E,IAAA,WAAA,KAEA/E,KAAA8C,MAAAjD,UACAG,KAAAgF,cAAA,EAEA,EAEAC,cAAAC,GACAlF,KAAAC,UAEAiF,EAAAC,IAAA,aACAnF,KAAAgF,aAAAhF,KAAA8C,MAAAjD,UAGAqF,EAAAC,IAAA,cACAnF,KAAAC,QAAAqE,YAAAtE,KAAA8C,MAAAsC,UACApF,KAAA+E,IAAA,WAAA/E,KAAA8C,MAAAsC,WAGAF,EAAAC,IAAA,aACAnF,KAAAC,QAAAsE,YAAAvE,KAAA8C,MAAAxE,UAGA4G,EAAAC,IAAA,UACAnF,KAAAC,QAAA8C,UAAA/C,KAAA+B,aAEA/B,KAAA8C,MAAA1E,UACA4B,KAAAqF,UAAArF,KAAA8C,MAAAb,OAAA,IAAA,GACAjC,KAAAC,QAAApB,QAAAmB,KAAA8C,MAAAjE,SACAmB,KAAAC,QAAAqE,YAAAtE,KAAA8C,MAAAsC,YAEApF,KAAAC,QAAAqF,aAAAC,SAAA/D,IACA,MAAAgE,EAAAxF,KAAAC,QAAAwF,cAAAjE,GAEA,IAAAgE,EAAA5D,MAAA,CACA,MAAAE,EAAA9B,KAAA+B,aAAAC,MAAAtE,GAAAA,EAAAuE,OAAAuD,EAAAvD,OAAAvE,EAAAwE,OAAAsD,EAAAvD,QAEAH,IACAtE,OAAA2E,OAAAqD,EAAA1D,GACA9B,KAAAC,QAAAyF,WAAAlE,EAAAgE,GAEA,KAEAxF,KAAAM,gBAIA4E,EAAAC,IAAA,UACAnF,KAAAqF,UAAArF,KAAA8C,MAAAb,OAAA,GAGAiD,EAAAC,IAAA,YACAnF,KAAAC,QAAApB,QAAAmB,KAAA8C,MAAAjE,SAEA,EAEAmG,aAAAW,GACA3F,KAAA4F,WACA5F,KAAA4F,UAAApD,UAGAmD,IACAE,OAAAC,SACA9F,KAAA4F,UAAA,IAAAE,SAAA9F,KAAAC,QAAA8F,IAAAC,MAAA,CACAC,SAAA,IAAAjG,KAAAC,QAAA3C,SAAA4I,WAAA1E,IACA2E,UAAA,CACAC,QAAA,IAAApG,KAAAC,QAAAoG,0BAIAC,QAAAC,KAAA,0BAGA,EAEAjG,cACA,MAAAH,EAAAH,KAAAC,QAAAuG,gBACAxG,KAAA+E,IAAA,QAAA5E,EAAA8D,KAAAzC,GAAAA,EAAAK,UACA7B,KAAA+E,IAAA,SAAA5E,EAAA8D,KAAAzC,GAAAA,EAAAS,QACA,EAEAoC,WAAA,CACAoC,QAAA,CAAA1F,EAAA2F,IACA,qCAEAA,EAAAR,WAAAS,aAAAD,EAAA5H,KAAA4H,EAAAR,WAAAQ,EAAA5H,KAAA,QAAA,MAAAiC,EAAA6F,yBACAF,EAAApI,SAAA,WAAA,iBACAoI,EAAAtB,SAAA,WAAA,iBACAsB,EAAAG,SAAA,WAAA,iBACA9F,EAAA+F,aAAA,YAAA,aAAA/F,EAAAgG,aAAA,eAAA,iBACAhG,EAAA+F,aAAA,SAAA,UAAA/F,EAAAgG,aAAA,YAAA,2DAGAL,EAAApI,UAAAoI,EAAAzD,UAAA,kBAAA,2DAEAyD,EAAAM,aAAA,2CACAN,EAAAM,aAAA,yBACAN,EAAAR,WAAAnF,mGAGA,OAAA2F,EAAA5H,gDAKA0C,IAAAgE,GACA,MAAAkB,EAAA1G,KAAA1C,SAEA,MAAA,6BAEAkI,EAAAlH,SAAA,WAAA,wBACAkH,EAAAyB,OAAAzB,EAAAvD,gGAGAyE,EAAAQ,KAAAC,cAAA,GAAA,wBACAT,EAAAR,WAAA1E,OAAAgE,EAAA/D,OAAA,4CACA+D,EAAA4B,OAAA,0EAIAV,EAAAR,WAAAmB,uHAKA,UAAAX,EAAA5H,KAAA,2CAAA,gCAEA0G,EAAA7D,MAAA,wGAGA6D,EAAA7D,wIAGA,+CAEA+E,EAAAR,WAAApI,0BACA0H,EAAAkB,EAAA1D,cAAAwC,EAAAvD,wDAIA,EAEAqF,aAAA3C,GACA,MAAAyC,EAAAG,iBAAAvH,KAAA+F,IAAAyB,eACAC,EAAAL,EAAAM,iBAAA,eAAA,OACAC,EAAAP,EAAAM,iBAAA,oBAAA,MACAE,EAAAR,EAAAM,iBAAA,sBAAA,UACAG,EAAAT,EAAAM,iBAAA,qBAAA,UACAI,EAAAV,EAAAM,iBAAA,qBAAA,QACAK,EAAAX,EAAAM,iBAAA,uBAAA,UAEA,MAAA,oCAEA/C,EAAA1C,4BACAjC,KAAA1C,SAAA4I,WAAAoB,gBAAA3C,EAAAlD,OAAA,6EACAgG,8EAIA9C,EAAAhD,MAAA,kGAGAgD,EAAAhD,4DACAgG,oDAEA,0DACAC,qBACAjD,EAAAzC,OAAAyC,EAAA1C,sBACA0C,EAAAqD,UAAA,gFAEAH,gBAAAC,wBACAnD,EAAAqD,iDAEA,mCAEArD,EAAAjD,MAAA,2DACAqG,uBACApD,EAAAjD,yCAEA,4BAGA,GAGA2D,UAAApD,EAAAgG,GACAlL,IAAAC,UAAA,gBAAAoF,UAAAiD,UAAAhD,KAAArC,KAAAiC,EAAAgG,GACAjI,KAAAC,QAAAiI,mBAAAlI,KAAA8C,MAAAb,OACAjC,KAAAM,aACA,EAEAyB,aACA,OAAApE,MAAAwK,QAAAnI,KAAA8C,MAAApF,MAAAsC,KAAA8C,MAAApF,KAAAuG,KAAAU,IACA,MAAAqB,EAAAjJ,IAAAqL,UAAAzD,EAAA3E,MACAwF,EAAA,CACA5D,OAAA,EACAC,OAAA8C,EACA1C,MAAApE,OAAAd,IAAAsL,MAAArI,KAAA8C,MAAAlF,SAAAoI,IACA9D,MAAArE,OAAAd,IAAAsL,MAAArI,KAAA8C,MAAAhF,QAAAkI,KAaA,OAVAhG,KAAA8C,MAAA/D,SAAAyG,EAAAvD,MAAAuD,EAAAvD,MAAAiB,QACAlD,KAAA8C,MAAA/D,SAAAyG,EAAAtD,MAAAsD,EAAAtD,MAAAgB,QAEAyB,EAAAyC,QAAA5B,EAAA4B,MAAAzC,EAAAyC,OACApH,KAAA8C,MAAA/E,eAAAyH,EAAAwC,UAAAjL,IAAAsL,MAAArI,KAAA8C,MAAA/E,aAAAiI,IACAhG,KAAA8C,MAAA9E,WAAAwH,EAAA7D,MAAA5E,IAAAsL,MAAArI,KAAA8C,MAAA9E,SAAAgI,IACAhG,KAAA8C,MAAA7E,WAAAuH,EAAA/D,MAAA1E,IAAAsL,MAAArI,KAAA8C,MAAA7E,SAAA+H,IACAhG,KAAA8C,MAAA5E,WAAAsH,EAAA9D,MAAA3E,IAAAsL,MAAArI,KAAA8C,MAAA5E,SAAA8H,IACAhG,KAAA8C,MAAA3E,cAAAqH,EAAAlH,WAAAvB,IAAAsL,MAAArI,KAAA8C,MAAA3E,YAAA6H,IAEAR,CAAA,IACA,EACA,EAEAnE,iBAAAiH,GACA,MAAAC,EAAAD,EAAAC,SACA,IAAAC,EAAAxI,KAAAyC,MAAAgG,KAEAD,GAAA,UAAAxI,KAAA8C,MAAAhE,MAAA,OAAAkB,KAAA8C,MAAAhE,OACAyJ,EAAAG,OAAA1I,KAAAyC,MAAAgG,MAEA9K,MAAAwK,QAAAnI,KAAAtC,KAAAN,UACA,MAAAoL,EAAAG,OAAA,KAAAH,GAAA,MACAxI,KAAAtC,KAAAN,OAAAmI,SAAAtD,IACAsG,EAAAK,OAAAJ,EAAAvG,EAAA,KAIA,EAEA4G,cAAAP,GACAtI,KAAAC,UACAD,KAAAyC,MAAAwF,cACAjI,KAAAqF,UAAArF,KAAAyC,MAAAwF,cACAjI,KAAAC,QAAAiI,mBAAAlI,KAAAyC,MAAAwF,eAEAjI,KAAAC,QAAAO,gBAGAR,KAAAM,eAGAvD,IAAAC,UAAA,gBAAAoF,UAAAyG,cAAAxG,KAAArC,KAAAsI,EACA","file":"dmxTagify.js","sourcesContent":["dmx.Component('tagify', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n items: [],\r\n values: [],\r\n },\r\n\r\n attributes: {\r\n settings: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n data: {\r\n type: Array,\r\n default: null,\r\n },\r\n\r\n tagValue: {\r\n type: String,\r\n default: '$value',\r\n },\r\n\r\n tagText: {\r\n type: String,\r\n default: '$value',\r\n },\r\n\r\n tagSecondary: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n tagImage: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n tagClass: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n tagCount: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n tagReadonly: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n nocustom: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n readonly: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n delimiters: {\r\n type: String,\r\n default: ',',\r\n },\r\n\r\n duplicates: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n noinput: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n maxTags: {\r\n type: Number,\r\n default: Infinity,\r\n },\r\n\r\n loading: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n mode: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n notrim: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n noautocomplete: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n keepInvalid: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n skipInvalid: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n minChars: {\r\n type: Number,\r\n default: 2,\r\n },\r\n\r\n caseSensitive: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n maxItems: {\r\n type: Number,\r\n default: 10,\r\n },\r\n\r\n noFuzzySearch: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n noAccentedSearch: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n dropdownPosition: {\r\n type: String,\r\n default: 'all',\r\n enum: ['all', 'text', 'input'],\r\n },\r\n\r\n highlightFirst: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n noCloseOnSelect: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n pattern: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n dragsort: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n addEmptyTag () {\r\n this._tagify.addEmptyTag();\r\n },\r\n\r\n addTags (tags, clear, skipInvalids) {\r\n this._tagify.addTags(tags, clear, skipInvalids);\r\n this._updateData();\r\n },\r\n\r\n removeTags (tags) {\r\n this._tagify.removeTags(tags);\r\n this._updateData();\r\n },\r\n\r\n removeAllTags () {\r\n this._tagify.removeAllTags();\r\n this._updateData();\r\n },\r\n },\r\n\r\n events: {\r\n change: Event,\r\n add: Event,\r\n remove: Event,\r\n invalid: Event,\r\n input: Event,\r\n focus: Event,\r\n blur: Event,\r\n noresults: Event,\r\n },\r\n\r\n init (node) {\r\n this._formdataHandler = this._formdataHandler.bind(this);\r\n this._updateData = this._updateData.bind(this);\r\n\r\n this._transformTag = tag => {\r\n delete tag.class;\r\n delete tag.count;\r\n delete tag.image;\r\n delete tag.__dmx;\r\n delete tag.__item;\r\n\r\n const found = this._whitelist().find(data => data.value == tag.value || data.label == tag.value);\r\n\r\n if (found) {\r\n Object.assign(tag, found);\r\n }\r\n };\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n if (node.form) {\r\n node.form.addEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n destroy () {\r\n dmx.Component('form-element').prototype.destroy.call(this);\r\n\r\n if (this.$node.form) {\r\n this.$node.form.removeEventListener('formdata', this._formdataHandler);\r\n }\r\n\r\n this._tagify.destroy();\r\n },\r\n\r\n render (node) {\r\n this._tagify = new Tagify(node, {\r\n enforceWhitelist: this.props.nocustom,\r\n whitelist: this._whitelist(),\r\n tagTextProp: 'label',\r\n delimiters: this.props.delimiters,\r\n duplicates: this.props.duplicates,\r\n userInput: !this.props.noinput,\r\n maxTags: this.props.maxTags,\r\n mode: this.props.mode,\r\n trim: !this.props.notrim,\r\n keepInvalidTags: this.props.keepInvalid,\r\n skipInvalid: this.props.skipInvalid,\r\n pattern: this.props.pattern && this.props.pattern.startsWith('/') ? new RegExp(this.props.pattern.replace(/^\\/|\\/$/, '')) : this.props.pattern,\r\n autoComplete: {\r\n enabled: !this.props.noautocomplete,\r\n rightKey: !this.props.noautocomplete,\r\n },\r\n dropdown: {\r\n enabled: this.props.minChars >= 0 ? this.props.minChars : false,\r\n searchKeys: ['label'],\r\n caseSensitive: this.props.caseSensitive,\r\n maxItems: this.props.maxItems,\r\n fuzzySearch: !this.props.noFuzzySearch,\r\n accentedSearch: !this.props.noAccentedSearch,\r\n position: this.props.dropdownPosition,\r\n highlightFirst: this.props.highlightFirst,\r\n closeOnSelect: !this.props.noCloseOnSelect,\r\n },\r\n originalInputValueFormat: tags => tags.map(tag => tag.value).join(this.props.delimiters[0]),\r\n transformTag: this._transformTag,\r\n templates: this._templates,\r\n ...this.props.settings,\r\n });\r\n\r\n if (this.props.nocustom && !this.props.data) {\r\n this._tagify.loading(true);\r\n this._tagify.setDisabled(true);\r\n } else {\r\n this._tagify.loading(this.props.loading);\r\n }\r\n\r\n this._tagify.setReadonly(this.props.readonly);\r\n\r\n this._tagify.on('change', () => this.dispatchEvent('change'));\r\n this._tagify.on('focus', () => this.dispatchEvent('focus'));\r\n this._tagify.on('blur', () => this.dispatchEvent('blur'));\r\n\r\n this._tagify.on('add', ({detail}) => {\r\n this.dispatchEvent('add', null, {\r\n item: detail.data.__item,\r\n value: detail.data.value,\r\n isCustom: !detail.data.__item,\r\n });\r\n });\r\n\r\n this._tagify.on('remove', ({detail}) => {\r\n this.dispatchEvent('remove', null, {\r\n item: detail.data.__item,\r\n value: detail.data.value,\r\n isCustom: detail.data.__item,\r\n });\r\n });\r\n\r\n this._tagify.on('invalid', ({detail}) => {\r\n this.dispatchEvent('invalid', null, {\r\n value: detail.data.value,\r\n message: detail.message,\r\n });\r\n });\r\n\r\n this._tagify.on('input', ({detail}) => {\r\n this.dispatchEvent('input', null, {\r\n value: detail.value,\r\n isValid: detail.isValid,\r\n });\r\n });\r\n\r\n this._tagify.on('dropdown:noMatch', ({detail}) => {\r\n this.dispatchEvent('noresults', null, {\r\n value: detail.value,\r\n });\r\n });\r\n\r\n this._tagify.on('change', this._updateData);\r\n this._tagify.on('focus', () => this.set('focused', true));\r\n this._tagify.on('blur', () => this.set('focused', false));\r\n\r\n if (this.props.dragsort) {\r\n this._setDragSort(true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (!this._tagify) return;\r\n\r\n if (updatedProps.has('dragSort')) {\r\n this._setDragSort(this.props.dragsort);\r\n }\r\n\r\n if (updatedProps.has('disabled')) {\r\n this._tagify.setDisabled(this.props.disabled);\r\n this.set('disabled', this.props.disabled);\r\n }\r\n\r\n if (updatedProps.has('readonly')) {\r\n this._tagify.setReadonly(this.props.readonly);\r\n }\r\n\r\n if (updatedProps.has('data')) {\r\n this._tagify.whitelist = this._whitelist();\r\n\r\n if (this.props.nocustom) {\r\n this._setValue(this.props.value || '', true);\r\n this._tagify.loading(this.props.loading);\r\n this._tagify.setDisabled(this.props.disabled);\r\n } else {\r\n this._tagify.getTagElms().forEach(tag => {\r\n const tagData = this._tagify.getSetTagData(tag);\r\n\r\n if (!tagData.__dmx) {\r\n const found = this._whitelist().find(data => data.value == tagData.value || data.label == tagData.value);\r\n\r\n if (found) {\r\n Object.assign(tagData, found);\r\n this._tagify.replaceTag(tag, tagData);\r\n }\r\n }\r\n });\r\n this._updateData();\r\n }\r\n }\r\n\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n\r\n if (updatedProps.has('loading')) {\r\n this._tagify.loading(this.props.loading);\r\n }\r\n },\r\n\r\n _setDragSort (enable) {\r\n if (this._dragsort) {\r\n this._dragsort.destroy();\r\n }\r\n\r\n if (enable) {\r\n if (window.DragSort) {\r\n this._dragsort = new DragSort(this._tagify.DOM.scope, {\r\n selector: '.' + this._tagify.settings.classNames.tag,\r\n callbacks: {\r\n dragEnd: () => this._tagify.updateValueByDOMTags()\r\n }\r\n });\r\n } else {\r\n console.warn('DragSort is not loaded');\r\n }\r\n }\r\n },\r\n\r\n _updateData () {\r\n const tags = this._tagify.getCleanValue();\r\n this.set('items', tags.map(tag => tag.__item));\r\n this.set('values', tags.map(tag => tag.value));\r\n },\r\n\r\n _templates: {\r\n wrapper (input, _s) {\r\n return `\r\n ​\r\n `;\r\n },\r\n\r\n tag (tagData) {\r\n const _s = this.settings;\r\n\r\n return `\r\n \r\n \r\n \r\n ${tagData.image ? `\r\n \r\n ` : ''}\r\n ${tagData[_s.tagTextProp] || tagData.value}\r\n \r\n \r\n `;\r\n },\r\n\r\n dropdownItem (item) {\r\n const style = getComputedStyle(this.DOM.originalInput);\r\n const gap = style.getPropertyValue('--item-gap') || '.3em';\r\n const img_size = style.getPropertyValue('--item-img-size') || '1em';\r\n const text_color = style.getPropertyValue('--item-text-color') || 'inherit';\r\n const sec_color = style.getPropertyValue('--item-sec-color') || 'inherit';\r\n const sec_size = style.getPropertyValue('--items-sec-size') || '.75em';\r\n const count_color = style.getPropertyValue('--item_count-color') || 'inherit';\r\n\r\n return `\r\n \r\n ${item.image ? `\r\n \r\n ` : ''}\r\n
\r\n ${item.label || item.value}\r\n ${item.secondary ? `\r\n
\r\n \r\n ${item.secondary}\r\n \r\n ` : ''}\r\n
\r\n ${item.count ? `\r\n
\r\n (${item.count})\r\n
\r\n ` : ''}\r\n \r\n `;\r\n },\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n dmx.Component('form-element').prototype._setValue.call(this, value, defaultValue);\r\n this._tagify.loadOriginalValues(this.props.value);\r\n this._updateData();\r\n },\r\n\r\n _whitelist () {\r\n return Array.isArray(this.props.data) ? this.props.data.map(item => {\r\n const scope = dmx.DataScope(item, this);\r\n const tagData = {\r\n __dmx: true,\r\n __item: item,\r\n value: String(dmx.parse(this.props.tagValue, scope)),\r\n label: String(dmx.parse(this.props.tagText, scope)),\r\n };\r\n\r\n if (!this.props.notrim) tagData.value = tagData.value.trim();\r\n if (!this.props.notrim) tagData.label = tagData.label.trim();\r\n\r\n if (item.style) tagData.style = item.style;\r\n if (this.props.tagSecondary) tagData.secondary = dmx.parse(this.props.tagSecondary, scope);\r\n if (this.props.tagImage) tagData.image = dmx.parse(this.props.tagImage, scope);\r\n if (this.props.tagClass) tagData.class = dmx.parse(this.props.tagClass, scope);\r\n if (this.props.tagCount) tagData.count = dmx.parse(this.props.tagCount, scope);\r\n if (this.props.tagReadonly) tagData.readonly = !!dmx.parse(this.props.tagReadonly, scope);\r\n\r\n return tagData;\r\n }) : [];\r\n },\r\n\r\n _formdataHandler (event) {\r\n const formData = event.formData;\r\n let _name = this.$node.name;\r\n\r\n if (_name && this.props.mode != 'select' && this.props.mode != 'mix') {\r\n formData.delete(this.$node.name);\r\n \r\n if (Array.isArray(this.data.values)) {\r\n if (_name.slice(-2) != '[]') _name += '[]';\r\n this.data.values.forEach(value => {\r\n formData.append(_name, value);\r\n })\r\n }\r\n }\r\n },\r\n\r\n _resetHandler (event) {\r\n if (this._tagify) {\r\n if (this.$node.defaultValue) {\r\n this._setValue(this.$node.defaultValue);\r\n this._tagify.loadOriginalValues(this.$node.defaultValue);\r\n } else {\r\n this._tagify.removeAllTags();\r\n }\r\n\r\n this._updateData();\r\n }\r\n\r\n dmx.Component('form-element').prototype._resetHandler.call(this, event);\r\n },\r\n\r\n});\r\n"]}