Loading
function(e,r,n){n.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}),n(321073),n(323874),n(14289),n(35956);var a,t,l,i=n(64700),o=n(820391),s=n(102607),u=n(374380),c=n(691540),p=n(857250),d=n(97483),f=n(626584),m=n(59318),v=n(572868),g=n(940622);let A=new f.A("ShopAssetsPreviewUtils");var _=((a={}).CATALOG_BANNER_STATIC="catalog_banner",a.CATALOG_BANNER_ANIMATED="catalog_banner_animated",a.CATALOG_BANNER_RIVE="catalog_banner_rive",a.HERO_BANNER_STATIC="hero_banner",a.HERO_BANNER_ANIMATED="hero_banner_animated",a.HERO_BANNER_RIVE="hero_rive",a.HERO_LOGO="hero_logo",a.FEATURED_BLOCK="featured_block",a.UPSELL_BANNER="upsell_banner",a.UPSELL_BANNER_POPOUT="upsell_banner_popout",a.PDP_BACKGROUND="pdp_bg",a.SHOP_BUTTON_BG_HOVER="shop_button_bg_hover",a.SHOP_BUTTON_BG_HOVER_DARK="shop_button_bg_hover_dark",a.SHOP_BUTTON_BG_HOVER_LIGHT="shop_button_bg_hover_light",a.SHOP_BUTTON_BG_RESTING="shop_button_bg_resting",a.SHOP_BUTTON_BG_RESTING_DARK="shop_button_bg_resting_dark",a.SHOP_BUTTON_BG_RESTING_LIGHT="shop_button_bg_resting_light",a.TAB_TOOLTIP="tab_tooltip",a.LOGO="logo",a.MOBILE_BANNER="mobile_banner",a.MOBILE_BACKGROUND="mobile_bg",a.MOBILE_HERO="mobile_hero",a);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);function w(e){(0,c.P0)((0,p.o)(e,d.Ck.FAILURE))}function F(e){(0,c.P0)((0,p.o)(e,d.Ck.SUCCESS))}function T(e,r){let n=new FileReader;n.onload=n=>{null==n.target||"string"!=typeof n.target.result?w("Error uploading file. Try again!"):r(e,n.target.result)},n.readAsDataURL(e)}function D(e,r,n){if(0===e.length)return void n?.("No files found!");for(let n of e)T(n,r)}function N(e,r){return`${e}/${r}`}function L(e){return(0,m.tT)(e.type)||(0,m.XB)(e.type)||(0,m.XA)(e.name)}function P(e){return h.get(e.name)??null}async function I(e){let r=e.createReader();return(await new Promise(e=>r.readEntries(e))).filter(e=>!(e.isDirectory&&e.name.startsWith("_")))}let S=async e=>{let r=[];if(e.isFile){let n=await new Promise(r=>e.file(r));n.name!==O&&r.push(n)}else if(e.isDirectory){let n=await I(e),a=await Promise.all(n.map(e=>S(e)));r.push(...a.flat())}return r},M=(e,r,n,a)=>{if(r.name===O)return;let t=N(e,r.name);if("profile_effects"===n)L(r)||r.name.endsWith(".txt")?(e in a.profileEffectFilesMap||(a.profileEffectFilesMap[e]=[]),a.profileEffectFilesMap[e].push(r)):a.ignoredFilenames.push(N(e,r.name));else L(r)?"collection"===n||null===n?null!=P(r)?a.collectionFiles.push(r):a.ignoredFilenames.push(t):"avatar_decorations"===n?a.avatarDecorationFiles.push(r):a.ignoredFilenames.push(t):a.ignoredFilenames.push(t)};async function C(e,r,n){for(let a of(await I(e)))if(a.isFile){let t=a,l=await new Promise(e=>t.file(e));M(e.name,l,r,n)}else{let e=await S(a);n.ignoredFilenames.push(...e.map(e=>N(a.name,e.name)))}}let U=async(e,r)=>{let n=e.name,a=await I(e),t={previewFile:null,layerFiles:[],unrecognizedSubdirs:[]};for(let e of a){if(e.isFile){if(e.name===O)continue;let a=e,l=await new Promise(e=>a.file(e));(0,v.Y_)(l.name)?t.previewFile=l:r.ignoredFilenames.push(`frames/${n}/${l.name}`);continue}if(e.isDirectory){let a=e.name;if("foreground"===a||"background"===a){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:a})}else if(l.isDirectory){let e=await S(l);r.ignoredFilenames.push(...e.map(e=>`frames/${n}/${a}/${l.name}/${e.name}`))}}else{t.unrecognizedSubdirs.push(a);let l=await S(e);r.ignoredFilenames.push(...l.map(e=>`frames/${n}/${a}/${e.name}`))}}}(null!=t.previewFile||0!==t.layerFiles.length)&&(r.profileFrameDirsMap[n]=t)},k=async(e,r)=>{for(let n of(await I(e)))n.isDirectory?await U(n,r):n.isFile&&n.name!==O&&r.ignoredFilenames.push(`frames/${n.name}`)},B=async(e,r)=>{for(let n of(await I(e)))n.isDirectory?await C(n,"profile_effects",r):n.isFile&&n.name!==O&&r.ignoredFilenames.push(N(e.name,n.name))};async function H(e,r){for(let n of(await I(e)))if(n.isDirectory){let e=n;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 n=await S(e);r.ignoredFilenames.push(...n.map(r=>N(e.name,r.name)))}}}async function j(e){let r={collectionFiles:[],avatarDecorationFiles:[],profileEffectFilesMap:{},profileFrameDirsMap:{},ignoredFilenames:[]};for(let n of e)if(n.isDirectory){let e=n.name;"collection"===e||"avatar_decorations"===e?await C(n,e,r):"profile_effects"===e?await B(n,r):"frames"===e?await k(n,r):await H(n,r)}else if(n.isFile){let e=n;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,n)=>{let a=new window.Image,t=setTimeout(()=>n(Error("Timed out measuring image")),15e3);a.onload=()=>{clearTimeout(t),r({width:a.naturalWidth,height:a.naturalHeight})},a.onerror=()=>{clearTimeout(t),n(Error("Failed to measure image"))},a.src=e})}function x(e,r){return e.length>0?Math.max(...e):r}function K(e,r,n){return Math.max(0,e-(r-n))}async function $(e,r,n){var a;let t,l,i=null!=r.previewFile?URL.createObjectURL(r.previewFile):null,c=[],p={};for(let{file:a,folder:t}of r.layerFiles){let{parsed:r,errorType:l}=(0,v.Mf)(a.name);if(null==r){let r=null!=l?v.h4[l]:"invalid";n.push(`frames/${e}/${t}/${a.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(a)}c.sort(v.ui);let d=c.map(e=>e.layer);if(0===d.length&&null==i)return null;let f=(a=(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(a.map(e=>{let{dims:r}=e;return Math.round(Math.max(0,(r.width-t)/2))}),0),{innerWidth:t,overflowTop:x(a.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(a.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,...f}}function V(){let[e,r]=i.useState(()=>({collectionFiles:[],avatarDecorationFiles:[],profileEffectFilesMap:{},profileFrameDirsMap:{},ignoredFilenames:[]})),{upsertCollectionAsset:n,upsertAvatarDecorationAsset:a,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&&n(r,e)})}),l.avatarDecorationFiles.forEach(e=>{T(e,e=>{a(e)})}),await Promise.all(Object.entries(l.profileFrameDirsMap).map(async e=>{let[r,n]=e,a=await $(r,n,l.ignoredFilenames);null!=a&&t(r,a)})),l.ignoredFilenames.sort((e,r)=>e.localeCompare(r)),r(l)},[n,a,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}}}