1import{u as re,a as ne,b as k,A as le,S as se,R as pe}from"./WPyfL__R.js";import{A as me}from"./w5fSHVfB.js";import{I as de}from"./Crr3oMRM.js";import{u as ue,h as ce,c as ye,H as P,a as fe,b as A,v as he}from"./CtNzLiXx.js";import{u as be,a as ge,b as _e}from"./DA9b2f_1.js";import{h as a}from"./BFXJ_u21.js";import{d as Ce,o as Se,c as ve,w as y,i as ke,e,r as I,j as f,a as Pe,b as h,s as Ae,I as x,v as F,x as Ie}from"./BZW10omn.js";import{u as xe}from"./BJlf3TdS.js";import{u as Fe}from"./DoWTQ-h-.js";import{I as He}from"./BJD8eJ2e.js";import{P as Ve}from"./zZnXXXB1.js";import{V as H,B as De}from"./DzNF47Dr.js";import"./SezT2eQw.js";import"./CrhymvJA.js";import"./CExWxFQ8.js";import"./BRzYXCeS.js";import"./C5zAqIRb.js";import"./Dv0nVOG1.js";import"./CS2Q5fy3.js";import"./CKuv3pYw.js";import"./DwYhwjFb.js";import"./Dx1NIOV9.js";import"./Bx8BLQLi.js";import"./DZArzmOM.js";import"./V2m6Rnik.js";import"./C-NXrJbX.js";import"./D-pctMGk.js";import"./B3m-0W_z.js";import"./Hlcp3Pcy.js";import"./BXAk2S7r.js";import"./Br0iJ7Q_.js";import"./CiahIdXZ.js";import"./CTuokXzc.js";import"./BDRe3KDE.js";import"./3DI49mIy.js";import"./CxYzlJjh.js";import"./sh6gjIHM.js";import"./CzOxCLvq.js";import"./CkhFUalh.js";import"./BwCQndUu.js";import"./CN2Woyag.js";import"./u87QG10_.js";import"./CCFBWwZe.js";import"./DMRDYeMb.js";import"./BQNnSaEH.js";import"./CWsr0R6u.js";import"./BRdPLytM.js";import"./9CjS1Rq_.js";import"./BGXzacx0.js";import"./DRIDgUyl.js";import"./kRIii9yh.js";import"./Bk0I47EG.js";import"./BYRAtkK4.js";import"./W8qNDKZ4.js";import"./CCxB_tda.js";import"./Dfcfs2Lx.js";import"./Bh4a4guI.js";import"./B36inb1C.js";import"./CV5ixzNL.js";import"./CZVAVC2R.js";import"./-HgrSaN_.js";import"./v4ogHtIQ.js";import"./8jIVVZGN.js";import"./DSj5rJ_-.js";import"./DsIj_jh5.js";import"./CgYJ3vcr.js";import"./BPAD7o33.js";import"./fPHK3sE0.js";import"./Bcci4eke.js";import"./CtCZqsVH.js";import"./D_ERbtfc.js";import"./Cf9MPH5X.js";import"./nfpUXHbS.js";import"./B5TgUZ32.js";import"./TlTN8Qza.js";import"./CzraKmYD.js";import"./Di2PKV0E.js";import"./DAvjz3By.js";import"./Oju8_IGt.js";import"./DZA0ZUyv.js";import"./DsO_exF9.js";import"./BwnM7fMZ.js";import"./F9G2lc0N.js";import"./CNzqe7dR.js";import"./BSBMuNQj.js";import"./Dt9NzEk-.js";import"./BI6lx7rS.js";import"./RAW2AKec.js";import"./DarylumG.js";import"./9OQAafjq.js";import"./hAjqVnws.js";import"./CJ4wvdpD.js";import"./XUWxm2sb.js";import"./DdUKkWoT.js";import"./DDZIYwLF.js";import"./luI0_cNQ.js";import"./r0UR7Srj.js";import"./BtHpy3hD.js";import"./D7YgTUtP.js";import"./BFGvu-ws.js";import"./D8EYdpPb.js";import"./D3Egszzd.js";import"./DB9IMVqC.js";import"./BV7etHCb.js";import"./CJmyRkkg.js";import"./DQ7GFlVv.js";import"./CTipbBFN.js";import"./Dg-54Zr8.js";import"./fURqYatp.js";import"./D0TosFlj.js";import"./BSNU3qB8.js";import"./Bky4jfDQ.js";import"./CuJYCSQI.js";import"./B8tsvXol.js";import"./IC_xAvgs.js";import"./Duo30lao.js";import"./Cc8G5zPh.js";import"./cJEBuORT.js";import"./D6v_IoSj.js";import"./Cfv0-mmO.js";import"./BgVKKfIh.js";import"./BX6GUL_2.js";import"./B7n2aalo.js";import"./C7dE-0hJ.js";import"./Bq_Rt7d3.js";import"./67_C7rYj.js";import"./DBnYRnXG.js";import"./BS9DIHsU.js";import"./Cm2llaDm.js";import"./D4WPyNF0.js";import"./BhyXZDm4.js";import"./Bg6Y8DEX.js";import"./Cz9-diXi.js";import"./DeCCGRU7.js";import"./BVyBMGyB.js";import"./BkQugLy-.js";import"./gwqgC0DB.js";import"./CHwzkAlT.js";import"./BGAPOJ3Q.js";import"./Dw8P0qyA.js";import"./88ku7XQm.js";import"./DlTIeALg.js";import"./lDllKL_f.js";import"./_sSeyJSm.js";import"./BI9XKNtd.js";import"./CjvRwI0K.js";import"./3qqrIbu1.js";import"./CCJABfBO.js";import"./Dwmkmi3Q.js";import"./xTWljyZP.js";import"./CTwig1Hi.js";import"./sxMEEfY3.js";import"./jLscs5t7.js";import"./Decv8fe4.js";import"./CNJxBT4a.js";import"./D3dnTdrs.js";import"./-V8IX4DX.js";import"./JTSBW-nj.js";import"./DYO-L9_e.js";import"./BJ3mCPVF.js";import"./DGWcSAuF.js";import"./CKF4GSMQ.js";import"./BNiZW1M_.js";import"./CgUGmY7a.js";import"./D7rMWBLm.js";import"./BCE8EPqM.js";import"./CrPJBOB3.js";const Oi=Ce({__name:"headphones",setup(we){const{updateHeadphone:V,saveHeadphoneColours:D,deleteHeadphone:w,deleteMultipleHeadphones:R,handleHeadphoneImport:T}=ue(),l=re(),m=I(0),{getColourConfigFields:E,getColourDisplayConfig:B,autoFillColourFields:M,createSaveColourConfigs:N,generateColourImportColumns:O}=xe(),b=I(!1),{isMobile:K}=Fe();Se(()=>{b.value=!0});const d=async()=>{await Promise.all([p.refreshIndex(),p.refreshFacets()])},r=()=>{m.value+=1},L=async()=>{r(),await d()},g=ne({definition:a,activePipelineTab:l,refreshPipeline:r}),q=async()=>{await d()},_=f(()=>({configFields:E(),displayConfig:B(),configLabel:"Colour",singularConfigLabel:"Colour",dialogTitle:"Colours",enableOrdering:!0,autoFillFunction:M})),C=[{key:"images_display_column",header:"Images",icon:He,type:"image",component:de,getComponentProps:t=>({itemId:t.id,itemData:t,imageTypeConfigs:ce,tableName:"headphones"}),isSortable:!1,isFilterable:!1,isVirtual:!0},{key:"colours",header:"Colours",icon:Ve,type:"config",component:k,getComponentProps:t=>({configs:t.colours||[],..._.value,dialogDescription:`${t.model}`,onSave:i=>D(t.id,i).then(()=>{}),onConfigSaved:q}),isSortable:!1,isFilterable:!1,isVirtual:!0},...ye({internalOnly:!0})],s=[{name:"Default",visibleColumns:["images_display_column","id","manufacturer","model","colours","headphones_type","battery_life","anc","spatial_audio"]},{name:"Basic Info",visibleColumns:["id","manufacturer","model","colours","active","headphones_type","msrp_usd"]},{name:"Audio Features",visibleColumns:["id","manufacturer","model","anc","transparency_mode","spatial_audio","adaptive_eq","driver_size","bluetooth"]},{name:"Battery & Charging",visibleColumns:["id","manufacturer","model","battery_life","battery_life_anc","charge_case_battery_life","qi_wireless_charging","charging_port"]},{name:"Compatibility",visibleColumns:["id","manufacturer","model","ios","android","min_ios","min_macos","bluetooth"]},{name:"Physical",visibleColumns:["id","manufacturer","model","height","width","depth","weight","build_material","ip_rating"]}],z=O(5),u=f(()=>[...C,...z]),U=[{key:"source_type",header:"Source Type",type:"text",defaultValue:"manual"},{key:"source_name",header:"Source Name",type:"text"},{key:"source_url",header:"Source URL",type:"text"},{key:"source_identifier",header:"Source Identifier",type:"text",alternateHeaders:["ID"]},{key:"manufacturer",header:"Manufacturer",type:"text"},{key:"model",header:"Model",type:"text"},{key:"headphones_type",header:"Type",type:"text"},{key:"msrp_usd",header:"MSRP USD",type:"number"},{key:"battery_life",header:"Battery Life",type:"number"},{key:"battery_life_anc",header:"Battery Life ANC",type:"number"},{key:"charge_case_battery_life",header:"Case Battery Life",type:"number"},{key:"chip",header:"Chip",type:"text"},{key:"driver_size",header:"Driver Size",type:"number"},{key:"bluetooth",header:"Bluetooth",type:"number"},{key:"anc",header:"ANC",type:"boolean"},{key:"transparency_mode",header:"Transparency Mode",type:"boolean"},{key:"spatial_audio",header:"Spatial Audio",type:"boolean"},{key:"adaptive_eq",header:"Adaptive EQ",type:"boolean"},{key:"ip_rating",header:"IP Rating",type:"text"},{key:"charging_port",header:"Charging Port",type:"text"},{key:"release_date",header:"Release Date",type:"date"},{key:"raw_payload",header:"Raw Payload JSON",type:"json"},{key:"raw_text",header:"Raw Text",type:"text"}],Q=["approved_for_public","images_display_column","model","manufacturer","colours","headphones_type","battery_life","anc","spatial_audio","resolution_status","re
1conciliation_status",a.publicLabelKey,"public_match_review"],Y=(t,i)=>String(t.key)!=="colours"?t:{...t,component:k,getComponentProps:o=>({configs:Array.isArray(o.colours)?o.colours:[],..._.value,dialogDescription:typeof o.model=="string"?o.model:"",onSave:N(Number(o.id),"headphone_staging"),onConfigSaved:i.refreshStaging})},S={title:"Add New Headphone",validationFn:he,tabs:[{id:"basic",label:"Basic Info",icon:x,sections:[{id:"basic-info",label:"Basic Information",icon:x,fields:[{key:"model",label:"Model",type:"text",required:!0,placeholder:""},{key:"manufacturer",label:"Manufacturer",type:"select",required:!0,selectOptions:["Apple","Sony","Bose","Samsung","Sennheiser","Audio-Technica","Beats","JBL","Skullcandy"]},{key:"msrp_usd",label:"MSRP",type:"number",placeholder:"",formatValue:Ae},{key:"headphones_type",label:"Type",type:"select",selectOptions:["Over-ear","On-ear","In-ear","Earbuds","Gaming","Studio"],placeholder:""}]}]},{id:"audio",label:"Audio & Features",icon:H,sections:[{id:"audio-features",label:"Audio Features",icon:H,fields:[{key:"anc",label:"Active Noise Cancellation",type:"boolean",defaultValue:!1},{key:"transparency_mode",label:"Transparency Mode",type:"boolean",defaultValue:!1},{key:"spatial_audio",label:"Spatial Audio",type:"boolean",defaultValue:!1},{key:"adaptive_eq",label:"Adaptive EQ",type:"boolean",defaultValue:!1},{key:"driver_size",label:"Driver Size",type:"number",placeholder:"",formatValue:t=>Ie(t)}]},{id:"battery-connectivity",label:"Battery & Connectivity",icon:De,fields:[{key:"battery_life",label:"Battery Life",type:"number",step:.5,placeholder:"",formatValue:F},{key:"battery_life_anc",label:"Battery Life with ANC",type:"number",step:.5,placeholder:"",formatValue:F},{key:"bluetooth",label:"Bluetooth Version",type:"number",step:.1,placeholder:""},{key:"ios",label:"iOS Compatible",type:"boolean",defaultValue:!0},{key:"android",label:"Android Compatible",type:"boolean",defaultValue:!0}]}]}]},j=s[0]?.visibleColumns.map(t=>String(t))??["id","model","manufacturer"],{requestedColumnIds:J,extraIndexQuery:G,setRequestedColumnIds:$}=be({defaultVisibleColumns:j,columnVisibilityPresets:s,columnQueryKeyPrefix:"public",alwaysIncludedFields:["id","model","manufacturer"],omittedFields:["images_display_column"]}),v=new Set(P),W=new Set(fe),n=C.map(t=>{const i=String(t.key),o=W.has(i)?{...t,isSortable:!1}:t;return o.isFilterable===!1||v.has(i)?o:{...o,isFilterable:!1}}),X=f(()=>Array.from(new Set(J.value.filter(t=>v.has(t))))),p=ge({storageKeyPrefix:"admin-headphones",defaultPageSize:25,maxPageSize:100,defaultVisibleFilterKeys:[...A],baseColumnConfigs:n,prioritySortKeys:["updated_at","battery_life","msrp_usd","manufacturer"],facetEndpoint:"/api/admin/headphones/facets",indexEndpoint:"/api/admin/headphones",ssrFacets:!1,tableOnly:!0,supportedFilterKeys:[...P],extraIndexQuery:G,starterFacetKeys:X,loadStarterFacets:!1,asyncDataKeys:{facets:"admin-headphone-catalog-facets",index:"admin-headphone-catalog-page"},referenceDefault:{}}),Z=[{name:"Default",visibleFilters:[...A]}],{exactSelectableCount:ee,selectionScopeKey:te,fetchAllMatchingIds:oe}=_e({endpoint:"/api/admin/headphones",indexRequestQuery:p.indexRequestQuery});return(t,i)=>(Pe(),ve(le,{modelValue:e(l),"onUpdate:modelValue":i[1]||(i[1]=o=>ke(l)?l.value=o:null)},{public:y(()=>[h(me,{"server-state":e(p),"filter-presets":Z,"is-filter-layout-hydrated":e(b),"is-mobile":e(K),"columns-teleport-target":"admin-headphone-columns-target","column-query-key-prefix":"public","item-type-name":"Headphone","column-configs":e(n),"import-column-configs":e(u),"add-item":e(g),"update-item":(o,c,ie,ae)=>e(V)(o,c,ie,ae,e(n)),"delete-item":e(w),"delete-multiple-items":e(R),"handle-imported-data":(o,c)=>e(T)(o,e(u),c),"table-name":"headphones","table-display-name-singular":"Headphone","table-display-name":"Headphones","add-success-message":e(a).labelSingular+" review draft created in staging.","column-visibility-presets":s,"add-config":S,"fetch-all-selection-ids":e(oe),"selection-total-count":e(ee)??void 0,"selection-scope-key":e(te),"on-visible-column-ids-change":e($),"on-mutation-complete":L},null,8,["server-state","is-filter-layout-hydrated","is-mobile","column-configs","import-column-configs","add-item","update-item","delete-item","delete-multiple-items","handle-imported-data","add-success-message","fetch-all-selection-ids","selection-total-count","selection-scope-key","on-visible-column-ids-change"])]),staging:y(()=>
1[h(pe,{definition:e(a),"column-configs":e(n),"add-item":e(g),"add-config":S,"add-success-message":e(a).labelSingular+" review draft created in staging.","import-column-configs":e(u),"filter-column-configs":e(n),"column-visibility-presets":s,"refresh-token":e(m),"column-query-key-prefix":"staging","adapt-column":Y,"reconcile-visible-column-ids":Q,onMutated:r,onPublicPushed:i[0]||(i[0]=()=>{r(),d()})},null,8,["definition","column-configs","add-item","add-success-message","import-column-configs","filter-column-configs","column-visibility-presets","refresh-token"])]),sources:y(()=>[h(se,{definition:e(a),"import-column-configs":U,"refresh-token":e(m),"column-query-key-prefix":"sources",onProcessed:r},null,8,["definition","refresh-token"])]),_:1},8,["modelValue"]))}});export{Oi as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.