Loading
function(e,r,a){a.d(r,{GF:()=>F,Jn:()=>y,KE:()=>D,Kx:()=>R,Li:()=>E,Lv:()=>G,Ni:()=>w,RN:()=>_,aL:()=>b,ds:()=>V,eg:()=>j,pd:()=>P}),a(321073),a(323874),a(14289),a(35956);var n,t,l,i=a(64700),o=a(820391),s=a(102607),u=a(374380),c=a(691540),p=a(857250),d=a(97483),m=a(626584),f=a(59318),v=a(572868),g=a(940622);let A=new m.A("ShopAssetsPreviewUtils");var _=((n={}).CATALOG_BANNER_STATIC="catalog_banner",n.CATALOG_BANNER_ANIMATED="catalog_banner_animated",n.CATALOG_BANNER_RIVE="catalog_banner_rive",n.HERO_BANNER_STATIC="hero_banner",n.HERO_BANNER_ANIMATED="hero_banner_animated",n.HERO_BANNER_RIVE="hero_rive",n.HERO_LOGO="hero_logo",n.FEATURED_BLOCK="featured_block",n.UPSELL_BANNER="upsell_banner",n.UPSELL_BANNER_POPOUT="upsell_banner_popout",n.PDP_BACKGROUND="pdp_bg",n.SHOP_BUTTON_BG_HOVER="shop_button_bg_hover",n.SHOP_BUTTON_BG_HOVER_DARK="shop_button_bg_hover_dark",n.SHOP_BUTTON_BG_HOVER_LIGHT="shop_button_bg_hover_light",n.SHOP_BUTTON_BG_RESTING="shop_button_bg_resting",n.SHOP_BUTTON_BG_RESTING_DARK="shop_button_bg_resting_dark",n.SHOP_BUTTON_BG_RESTING_LIGHT="shop_button_bg_resting_light",n.TAB_TOOLTIP="tab_tooltip",n.LOGO="logo",n.MOBILE_BANNER="mobile_banner",n.MOBILE_BACKGROUND="mobile_bg",n.MOBILE_HERO="mobile_hero",n);let b={catalog_banner:["jpg","png"],catalog_banner_animated:["webm"],catalog_banner_rive:["riv"],hero_banner:["jpg","png"],hero_banner_animated:["webm"],hero_rive:["riv"],hero_logo:["png"],featured_block:["png"],upsell_banner:["jpg","png"],upsell_banner_popout:["png"],pdp_bg:["jpg"],shop_button_bg_hover:["png"],shop_button_bg_hover_dark:["png"],shop_button_bg_hover_light:["png"],shop_button_bg_resting:["png"],shop_button_bg_resting_dark:["png"],shop_button_bg_resting_light:["png"],tab_tooltip:["jpg","png"],logo:["png"],mobile_banner:["jpg"],mobile_bg:["jpg"],mobile_hero:["jpg"]},h=new Map(Object.values(_).flatMap(e=>b[e].map(r=>[`${e}.${r}`,e]))),E=new Set(h.keys());var y=((t={}).PROFILE_EFFECT="profile_effect",t.AVATAR_DECORATION="avatar_decoration",t.PROFILE_FRAME="profile_frame",t);let O=".DS_Store";var R=((l={}).COLLECTION="collection",l.AVATAR_DECORATIONS="avatar_decorations",l.FRAMES="frames",l.NAMEPLATES="nameplates",l.PROFILE_EFFECTS="profile_effects",l);let w=e=>{(0,c.P0)((0,p.o)(e,d.Ck.FAILURE))},F=e=>{(0,c.P0)((0,p.o)(e,d.Ck.SUCCESS))},T=(e,r)=>{let a=new FileReader;a.onload=a=>{null==a.target||"string"!=typeof a.target.result?w("Error uploading file. Try again!"):r(e,a.target.result)},a.readAsDataURL(e)},D=(e,r,a)=>{if(0===e.length)return void a?.("No files found!");for(let a of e)T(a,r)},N=(e,r)=>`${e}/${r}`,L=e=>(0,f.tT)(e.type)||(0,f.XB)(e.type)||(0,f.XA)(e.name),P=e=>h.get(e.name)??null,I=async e=>{let r=e.createReader();return(await new Promise(e=>r.readEntries(e))).filter(e=>!(e.isDirectory&&e.name.startsWith("_")))},S=async e=>{let r=[];if(e.isFile){let a=await new Promise(r=>e.file(r));a.name!==O&&r.push(a)}else if(e.isDirectory){let a=await I(e),n=await Promise.all(a.map(e=>S(e)));r.push(...n.flat())}return r},M=(e,r,a,n)=>{if(r.name===O)return;let t=N(e,r.name);if("profile_effects"===a)L(r)||r.name.endsWith(".txt")?(e in n.profileEffectFilesMap||(n.profileEffectFilesMap[e]=[]),n.profileEffectFilesMap[e].push(r)):n.ignoredFilenames.push(N(e,r.name));else L(r)?"collection"===a||null===a?null!=P(r)?n.collectionFiles.push(r):n.ignoredFilenames.push(t):"avatar_decorations"===a?n.avatarDecorationFiles.push(r):n.ignoredFilenames.push(t):n.ignoredFilenames.push(t)},C=async(e,r,a)=>{for(let n of(await I(e)))if(n.isFile){let t=n,l=await new Promise(e=>t.file(e));M(e.name,l,r,a)}else{let e=await S(n);a.ignoredFilenames.push(...e.map(e=>N(n.name,e.name)))}},U=async(e,r)=>{let a=e.name,n=await I(e),t={previewFile:null,layerFiles:[],unrecognizedSubdirs:[]};for(let e of n){if(e.isFile){if(e.name===O)continue;let n=e,l=await new Promise(e=>n.file(e));(0,v.Y_)(l.name)?t.previewFile=l:r.ignoredFilenames.push(`frames/${a}/${l.name}`);continue}if(e.isDirectory){let n=e.name;if("foreground"===n||"background"===n){for(let l of(await I(e)))if(l.isFile&&l.name!==O){let e=l,r=await new Promise(r=>e.file(r));t.layerFiles.push({file:r,folder:n})}else if(l.isDirectory){let e=await S(l);r.ignoredFilenames.push(...e.map(e=>`frames/${a}/${n}/${l.name}/${e.name}`))}}else{t.unrecognizedSubdirs.push(n);let l=await S(e);r.ignoredFilenames.push(...l.map(e=>`frames/${a}/${n}/${e.name}`))}}}(null!=t.previewFile||0!==t.layerFiles.length)&&(r.profileFrameDirsMap[a]=t)},k=async(e,r)=>{for(let a of(await I(e)))a.isDirectory?await U(a,r):a.isFile&&a.name!==O&&r.ignoredFilenames.push(`frames/${a.name}`)},B=async(e,r)=>{for(let a of(await I(e)))a.isDirectory?await C(a,"profile_effects",r):a.isFile&&a.name!==O&&r.ignoredFilenames.push(N(e.name,a.name))},H=async(e,r)=>{for(let a of(await I(e)))if(a.isDirectory){let e=a;if("collection"===e.name)await C(e,"collection",r);else if("avatar_decorations"===e.name)await C(e,"avatar_decorations",r);else if("profile_effects"===e.name)await B(e,r);else if("frames"===e.name)await k(e,r);else{let a=await S(e);r.ignoredFilenames.push(...a.map(r=>N(e.name,r.name)))}}},j=async e=>{let r={collectionFiles:[],avatarDecorationFiles:[],profileEffectFilesMap:{},profileFrameDirsMap:{},ignoredFilenames:[]};for(let a of e)if(a.isDirectory){let e=a.name;"collection"===e||"avatar_decorations"===e?await C(a,e,r):"profile_effects"===e?await B(a,r):"frames"===e?await k(a,r):await H(a,r)}else if(a.isFile){let e=a;M("",await new Promise(r=>e.file(r)),null,r)}return r.collectionFiles.sort((e,r)=>e.name.localeCompare(r.name)),r.avatarDecorationFiles.sort((e,r)=>e.name.localeCompare(r.name)),r.ignoredFilenames.sort((e,r)=>e.localeCompare(r)),r};function G(e){return new Promise((r,a)=>{let n=new window.Image,t=setTimeout(()=>a(Error("Timed out measuring image")),15e3);n.onload=()=>{clearTimeout(t),r({width:n.naturalWidth,height:n.naturalHeight})},n.onerror=()=>{clearTimeout(t),a(Error("Failed to measure image"))},n.src=e})}function x(e,r){return e.length>0?Math.max(...e):r}function K(e,r,a){return Math.max(0,e-(r-a))}let $=async(e,r,a)=>{var n;let t,l,i=null!=r.previewFile?URL.createObjectURL(r.previewFile):null,c=[],p={};for(let{file:n,folder:t}of r.layerFiles){let{parsed:r,errorType:l}=(0,v.Mf)(n.name);if(null==r){let r=null!=l?v.h4[l]:"invalid";a.push(`frames/${e}/${t}/${n.name}: ${r}`);continue}let i=v.R9[t],o=`preview-${e}-${i}-${r.index}`;c.push({layer:{id:o,type:r.type,order:i,anchor:r.anchor,responsive:r.responsive},order:i,index:r.index}),p[o]=URL.createObjectURL(n)}c.sort(v.ui);let d=c.map(e=>e.layer);if(0===d.length&&null==i)return null;let m=(n=(await Promise.all(c.map(async e=>{let{layer:r}=e;try{return{layer:r,dims:await G(p[r.id])}}catch(e){return A.error(`Failed to measure preview layer ${r.id}:`,e),null}}))).filter(e=>null!=e),t=o.x.INNER_WIDTH,l=x(n.map(e=>{let{dims:r}=e;return Math.round(Math.max(0,(r.width-t)/2))}),0),{innerWidth:t,overflowTop:x(n.filter(e=>{let{layer:r}=e;return r.type===u.O.STAPLE&&r.anchor===s.T.TOP}).map(e=>{let{dims:r}=e;return K(r.height,716,o.x.OVERFLOW_TOP)}),0),overflowBottom:x(n.filter(e=>{let{layer:r}=e;return r.type===u.O.STAPLE&&r.anchor===s.T.BOTTOM}).map(e=>{let{dims:r}=e;return K(r.height,424,o.x.OVERFLOW_BOTTOM)}),0),overflowHorizontal:l});return{key:e,previewSrc:i,layers:d,layerSrcByLayerId:p,...m}},V=()=>{let[e,r]=i.useState(()=>({collectionFiles:[],avatarDecorationFiles:[],profileEffectFilesMap:{},profileFrameDirsMap:{},ignoredFilenames:[]})),{upsertCollectionAsset:a,upsertAvatarDecorationAsset:n,upsertProfileFrame:t}=(0,g.JE)(),l=i.useCallback(async e=>{let l=await j(e);l.collectionFiles.forEach(e=>{T(e,e=>{let r=P(e);null!=r&&a(r,e)})}),l.avatarDecorationFiles.forEach(e=>{T(e,e=>{n(e)})}),await Promise.all(Object.entries(l.profileFrameDirsMap).map(async e=>{let[r,a]=e,n=await $(r,a,l.ignoredFilenames);null!=n&&t(r,n)})),l.ignoredFilenames.sort((e,r)=>e.localeCompare(r)),r(l)},[a,n,t]),o=i.useCallback(()=>{r(e=>({...e,collectionFiles:[],avatarDecorationFiles:[],profileEffectFilesMap:{},profileFrameDirsMap:{}}))},[]),s=i.useCallback(()=>{r(e=>({...e,ignoredFilenames:[]}))},[]);return{ignoredFilenames:e.ignoredFilenames,clearAssets:o,clearIgnoredFilenames:s,processAndUpsertAssets:l}}}