/*!
 * @quasar/quasar-ui-qiconpicker v3.0.0
 * (c) 2026 Jeff Galbraith <jeff@quasar.dev>
 * Released under the MIT License.
 */
(function(e,t){"object"===typeof exports&&"undefined"!==typeof module?t(exports,require("vue"),require("quasar")):"function"===typeof define&&define.amd?define(["exports","vue","quasar"],t):(e="undefined"!==typeof globalThis?globalThis:e||self,t(e.QIconPicker={},e.Vue,e.Quasar))})(this,function(e,v,h){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});const l=["material-icons","material-icons-outlined","material-icons-round","material-icons-sharp","material-symbols-outlined","material-symbols-rounded","material-symbols-sharp","ionicons-v8","mdi-v7","fontawesome-v7","eva-icons","themify","line-awesome","bootstrap-icons"];function n(e){return e.replace(/([A-Z]+)([A-Z][a-z])/g,"$1-$2").replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}function i(e){return n(e).replace(/-/g,"_")}function r(e,t){if(!1===e.startsWith(t))throw new Error(`Icon export ${e} does not start with expected prefix `+t);return e.slice(t.length)}function t(o,a=""){return(e,t)=>({name:""+a+n(r(e,o)),icon:t})}function o(o,a=""){return(e,t)=>({name:""+a+i(r(e,o)),icon:t})}function s(e){return Array.isArray(e)?e:e.default}function c(e){return Object.fromEntries(Object.entries(e).filter(e=>"string"===typeof e[1]))}function a(o,e,t){const a=s(e),i=new Set(a),n=c(t),r=u[o];return{name:o,icons:a.map(e=>{const t=n[e];if("string"!==typeof t)throw new Error(`QIconPicker: ${o} is missing @quasar/extras export `+e);return r.createEntry(e,t,i)})}}const u={"material-icons":{createEntry:o("mat")},"material-icons-outlined":{createEntry:o("outlined","o_")},"material-icons-round":{createEntry:o("round","r_")},"material-icons-sharp":{createEntry:o("sharp","s_")},"material-symbols-outlined":{createEntry:o("symOutlined","sym_o_")},"material-symbols-rounded":{createEntry:o("symRounded","sym_r_")},"material-symbols-sharp":{createEntry:o("symSharp","sym_s_")},"mdi-v7":{createEntry:t("mdi","mdi-")},"ionicons-v8":{createEntry:(e,t)=>({name:e,icon:t})},"fontawesome-v7":{createEntry:(e,t)=>({name:"fa-"+n(e.slice(3)),icon:t,prefix:e.slice(0,3)})},"line-awesome":{createEntry:(e,t,o)=>{const a=r(e,"la"),i=a.endsWith("Solid");return{name:"la-"+n(i?a.slice(0,-5):a),icon:t,prefix:i?"las":o.has(e+"Solid")?"lar":"lab"}}},"eva-icons":{createEntry:t("eva","eva-")},themify:{createEntry:t("ti","ti-")},"bootstrap-icons":{createEntry:t("bi","bi-")}},m={"material-icons":()=>Promise.all([import("@quasar/extras/material-icons/icons.json"),import("@quasar/extras/material-icons")]).then(([e,t])=>a("material-icons",e,t)),"material-icons-outlined":()=>Promise.all([import("@quasar/extras/material-icons-outlined/icons.json"),import("@quasar/extras/material-icons-outlined")]).then(([e,t])=>a("material-icons-outlined",e,t)),"material-icons-round":()=>Promise.all([import("@quasar/extras/material-icons-round/icons.json"),import("@quasar/extras/material-icons-round")]).then(([e,t])=>a("material-icons-round",e,t)),"material-icons-sharp":()=>Promise.all([import("@quasar/extras/material-icons-sharp/icons.json"),import("@quasar/extras/material-icons-sharp")]).then(([e,t])=>a("material-icons-sharp",e,t)),"material-symbols-outlined":()=>Promise.all([import("@quasar/extras/material-symbols-outlined/icons.json"),import("@quasar/extras/material-symbols-outlined")]).then(([e,t])=>a("material-symbols-outlined",e,t)),"material-symbols-rounded":()=>Promise.all([import("@quasar/extras/material-symbols-rounded/icons.json"),import("@quasar/extras/material-symbols-rounded")]).then(([e,t])=>a("material-symbols-rounded",e,t)),"material-symbols-sharp":()=>Promise.all([import("@quasar/extras/material-symbols-sharp/icons.json"),import("@quasar/extras/material-symbols-sharp")]).then(([e,t])=>a("material-symbols-sharp",e,t)),"ionicons-v8":()=>Promise.all([import("@quasar/extras/ionicons-v8/icons.json"),import("@quasar/extras/ionicons-v8")]).then(([e,t])=>a("ionicons-v8",e,t)),"mdi-v7":()=>Promise.all([import("@quasar/extras/mdi-v7/icons.json"),import("@quasar/extras/mdi-v7")]).then(([e,t])=>a("mdi-v7",e,t)),"fontawesome-v7":()=>Promise.all([import("@quasar/extras/fontawesome-v7/icons.json"),import("@quasar/extras/fontawesome-v7")]).then(([e,t])=>a("fontawesome-v7",e,t)),"line-awesome":()=>Promise.all([import("@quasar/extras/line-awesome/icons.json"),import("@quasar/extras/line-awesome")]).then(([e,t])=>a("line-awesome",e,t)),"eva-icons":()=>Promise.all([import("@quasar/extras/eva-icons/icons.json"),import("@quasar/extras/eva-icons")]).then(([e,t])=>a("eva-icons",e,t)),themify:()=>Promise.all([import("@quasar/extras/themify/icons.json"),import("@quasar/extras/themify")]).then(([e,t])=>a("themify",e,t)),"bootstrap-icons":()=>Promise.all([import("@quasar/extras/bootstrap-icons/icons.json"),import("@quasar/extras/bootstrap-icons")]).then(([e,t])=>a("bootstrap-icons",e,t))};function d(e){return m[e]()}const p={modelValue:String,iconSet:{type:String,validator:e=>[...l,""].includes(e),default:""},icons:Array,filter:String,dense:Boolean,tooltips:Boolean,noFooter:Boolean,size:{type:String,default:"inherit"},color:String,textColor:String,selectedColor:{type:String,default:"primary"},selectedTextColor:{type:String,default:"grey-1"},paginationProps:{type:Object,default:()=>({maxPages:5,input:!0})},modelPagination:Object,animated:Boolean,transitionPrev:{type:String,default:"slide-right"},transitionNext:{type:String,default:"slide-left"}},y={NEXT:"next",PREV:"prev"};function x(o,a,i,e){function n(e){return e.page<1&&(e.page=1),(void 0===e.itemsPerPage||e.itemsPerPage<1)&&(e.itemsPerPage=0),e}function r(e,t){for(var o in t)if(t[o]!==e[o])return!1;return!0}const s=(0,v.computed)(()=>{return n({...o.innerPagination,...a.modelPagination})}),t=(0,v.computed)(()=>{return 0===s.value.itemsPerPage?1:Math.max(1,Math.ceil(e.value.length/s.value.itemsPerPage))});function l(e){const t=n({...s.value,...e});r(o.innerPagination,t)||(a.modelPagination&&i("update:model-pagination",t),o.innerPagination=t)}function c(){void 0!==a.modelPagination&&l({total:e.value.length,totalPages:t.value})}return{samePagination:r,computedPagination:s,setPagination:l,updatePagination:c,computedPagesNumber:t}}function w(i,o,t,a){let n=0;async function e(t){const e=++n;if(i.iconsList=[],t)if("undefined"!==typeof window&&window.QIconPicker){const o=t.replace(/-([a-z])/g,e=>e[1].toUpperCase());window.QIconPicker.iconSet&&window.QIconPicker.iconSet[o]?i.iconsList=window.QIconPicker.iconSet[o].icons:(console.error("QIconPicker: no icon set loaded called "+t),console.error("Built-in icon sets require ESM bundler support for @quasar/extras lazy imports. With the UMD build, pass an icons array instead."))}else if(l.includes(t))try{const a=await d(t);e===n&&(i.iconsList=a.icons)}catch(e){console.error("QIconPicker: failed to load icon set called "+t),console.error(e)}else console.error("QIconPicker: cannot find icon set called "+t)}const r=(0,v.computed)(()=>{let e=[];return i.iconsList&&(e=s.value,o.modelPagination)&&0!==o.modelPagination.itemsPerPage&&(e=e.slice(t.value,a.value)),e}),s=(0,v.computed)(()=>{let e=i.iconsList;if(e&&void 0!==o.filter&&""!==o.filter&&null!==o.filter){const t=o.filter.toLowerCase();e=e.filter(e=>e.name.toLowerCase().includes(t))}return e});return{loadIconSet:e,computedDisplayedIcons:r,computedFilteredIcons:s}}function b(o,a,i,e,n,r,t){const s=()=>{const e=a.value.page;e>1&&(i({page:e-1}),o.direction=y.PREV)},l=()=>{const{page:e,itemsPerPage:t}=a.value;n.value>0&&e*t<r.value.length&&(i({page:e+1}),o.direction=y.NEXT)},c=()=>{i({page:t.value})},u=()=>{i({page:0})};return{prevPage:s,nextPage:l,lastPage:c,firstPage:u,isLastPage:(0,v.computed)(()=>{return 0===n.value||a.value.page>=t.value}),isFirstPage:(0,v.computed)(()=>{return 1===a.value.page})}}var g=(0,v.defineComponent)({name:"QIconPicker",slots:Object,props:{...p},emits:["update:model-value","update:model-pagination"],setup(c,{slots:u,emit:m,expose:e}){const d=(0,v.ref)(null),p=(0,v.reactive)({iconsList:[],innerPagination:{page:1,itemsPerPage:0,totalPages:0},width:"100",height:"100",direction:""}),t=(0,v.computed)(()=>{const{page:e,itemsPerPage:t}=P.value;return(e-1)*t}),o=(0,v.computed)(()=>{const{page:e,itemsPerPage:t}=P.value;return e*t}),{loadIconSet:a,computedDisplayedIcons:g,computedFilteredIcons:i}=w(p,c,t,o),{samePagination:n,computedPagination:P,setPagination:f,updatePagination:r,computedPagesNumber:s}=x(p,c,m,i),l=b(p,P,f,t,o,i,s);return e({prevPage:l.prevPage,nextPage:l.nextPage,lastPage:l.lastPage,firstPage:l.firstPage,isLastPage:l.isLastPage,isFirstPage:l.isFirstPage}),(0,v.onMounted)(async()=>{c.iconSet?await a(c.iconSet):void 0!==c.icons&&c.icons.length>0&&(p.iconsList=c.icons),r()}),(0,v.watch)(()=>c.iconSet,async e=>{e&&(await a(e),r(),(0,v.nextTick)(()=>{f({page:1})}).catch(e=>console.error(e)),d.value)&&d.value.setScrollPosition("vertical",0)}),(0,v.watch)(()=>c.icons,()=>{void 0!==c.icons&&c.icons.length>0&&(p.iconsList=c.icons),r(),(0,v.nextTick)(()=>{f({page:1})}).catch(e=>console.error(e)),d.value&&d.value.setScrollPosition("vertical",0)}),(0,v.watch)(()=>c.filter,()=>{f({page:1,totalPages:s.value}),r()}),c.modelPagination&&(0,v.watch)(()=>c.modelPagination,(e,t)=>{n(t,e)||r()}),c.modelPagination&&((0,v.watch)(()=>c.modelPagination.itemsPerPage,()=>{r()}),(0,v.watch)(()=>c.modelPagination.page,()=>{r()})),()=>{function e(){if(c.modelPagination&&0===c.modelPagination.itemsPerPage)return"";const{page:t,totalPages:e}=P.value;return u.pagination?u.pagination(P.value):(0,v.h)(h.QPagination,{class:"q-icon-picker__pagination",...c.paginationProps,modelValue:t,max:e,"onUpdate:modelValue":e=>{c.animated&&(e>t?p.direction=y.NEXT:p.direction=y.PREV),f({page:e})}})}function t(){if(!0!==c.noFooter&&void 0!==c.modelPagination)return(0,v.h)("div",{class:"q-icon-picker__footer flex flex-center"},[u.footer?u.footer(P.value):e()])}function s(e){if(!0===c.tooltips)return()=>(0,v.h)(h.QTooltip,{},()=>e)}function o(e){const t=void 0!==e.prefix?e.prefix+" "+e.name:e.name,o=void 0!==e.icon?e.icon:t;if(u.icon)return u.icon(t);const a=t===c.modelValue,i=a?c.selectedTextColor:void 0,n=a?c.selectedColor:void 0,r=c.size||void 0;return(0,v.h)(h.QBtn,{id:e.name,unelevated:!0,dense:c.dense,noWrap:!0,size:r,textColor:i,color:n,icon:o,onClick:()=>m("update:model-value",t)},s(t))}function a(){return g.value.map(e=>o(e))}function i(){const e=()=>(0,v.h)("div",{key:P.value.page,class:"q-icon-picker__container col"},[...a()]);if(!0!==c.animated)return e;{const t="q-transition--"+("prev"===p.direction?c.transitionPrev:c.transitionNext);return()=>(0,v.h)(v.Transition,{name:t,appear:!0},e)}}function n(){return(0,v.h)(h.QScrollArea,{ref:d,style:{width:p.width+"px",height:p.height+"px"}},i())}function r(){return(0,v.h)("div",{class:"q-icon-picker__body col column"},[n(),(0,v.h)(h.QResizeObserver,{onResize:e=>{p.width=e.width,p.height=e.height}})])}const l=["q-icon-picker","column"];return c.color&&l.push("bg-"+c.color),c.textColor&&l.push("text-"+c.textColor),(0,v.h)("div",{class:l.join(" ")},[r(),t()])}}});const P="3.0.0";function f(e){e.component(String(g.name),g)}e.QIconPicker=g,e.install=f,e.version=P});