File: C:/Users/fred/AppData/Local/Microsoft/OneDrive/26.168.0830.0006/WebAssets/static/views/sources.js
(function(){"use strict";var w=ViewLib.Messages.beginViewLoaded();function R(){return!!(window.ViewLib&&ViewLib.ECS&&ViewLib.ECS.isKillswitchSafe(7165))}ViewLib.Messages.onMessageType("page-visibility",function(e){if(!e.visible){s.currentMode==="folder"&&x();return}w.beginRevisit(),w.revisitCached()});const U=document.getElementById("loading"),H=document.getElementById("container"),T=document.getElementById("viewTitle"),V=document.getElementById("emptyState"),p=document.getElementById("sourcesGrid");let n=[],l=null;function F(){return!window.ViewLib||!ViewLib.ECS||ViewLib.ECS.isKillswitchSafe(6177)}function $(){return!window.ViewLib||!ViewLib.ECS||ViewLib.ECS.isKillswitchSafe(6464)}const b="od4.sourcesUpsellDismissed";var A=window.initSourcesRemoveDialog({escapeHtml:c,getSources:function(){return n},render:S,setSources:function(e){n=e},showToast:u}),v=window.initSourcesMenus({dismissKey:b,escapeHtml:c,getSources:function(){return n},render:S,setSources:function(e){n=e},showRemoveDialog:A.showRemoveDialog,showToast:u}),j=window.initSourcesUpsell({dismissKey:b,folderMaskSvg:C,escapeHtml:c,sourcesGrid:p,sourcesMenus:v});const N=document.getElementById("folderBrowser"),W=document.getElementById("breadcrumbs"),z=document.getElementById("folderTitle"),Q=document.getElementById("subfolders"),k=document.getElementById("photoGrid"),Y=document.getElementById("folderSubrow"),Z=document.getElementById("backBtn");var s={currentMode:"sources",folderPath:[],currentSourcePath:"",currentSourceType:"local"},E=!1,q=typeof initSourcesPhotoCtxMenu=="function"?initSourcesPhotoCtxMenu({getFilePath:function(e){var o=s.folderPath.slice(1).map(function(i){return i.name}).join("\\");return o?s.currentSourcePath+"\\"+o+"\\"+e:s.currentSourcePath+"\\"+e},getPhotoGrid:function(){return k},showToast:u,escapeHtml:c,onItemDeleted:function(e){a&&a.removeDeletedItem(e)}}):null,a=window.initSourcesFolderBrowser(s,{folderBrowser:N,breadcrumbs:W,folderTitleEl:z,subfoldersEl:Q,photoGrid:k,folderSubrow:Y,sourcesGrid:p,emptyState:V,backBtn:Z,viewTitle:T,pillSlot:document.getElementById("od4StatusPillSlot")},{render:S,showToast:u,escapeHtml:c,folderMaskSvg:C,photoCtxMenu:q}),I=a.enterFolderMode,x=a.exitToSources,g=window.initSourcesGrid({loading:U,container:H,viewTitle:T,emptyState:V,sourcesGrid:p,dismissKey:b,fb:s,vpViewLoad:w,folderMaskSvg:C,escapeHtml:c,enterFolderMode:I,getFeatureUnavailable:function(){return D},getSources:function(){return n},isProgressBarKsSafe:F,sourcesMenus:v,sourcesUpsell:j}),_=window.initSourcesWs({fb:s,folderBrowser:a,getSources:function(){return n},grid:g,isL1GalleryItemSubKsSafe:$,isProgressBarKsSafe:F,loadSources:y}),J=window.initSourcesAddFolder({getSources:function(){return n},loadSources:y,showToast:u,sourcesGrid:p});function S(){h&&R()?w.fail(h&&h.name||"UnknownError"):w.firstLoad(),g&&g.render()}window.addEventListener("message",e=>{if(e.data&&e.data.type==="shell-pane-resize"){var o=e.data.insetEnd||0;document.documentElement.style.setProperty("--shell-pane-inset",o+"px"),document.body.classList.toggle("pane-open",o>0)}if(e.data&&e.data.type==="theme-changed"&&(document.documentElement.setAttribute("data-theme",e.data.theme),typeof SourcesPhotoCanvas<"u"&&SourcesPhotoCanvas.isActive())){var i=SourcesPhotoCanvas.getGallery();if(i&&i.gl){var d=e.data.theme==="light"?1:.16470588235294117;i.gl.clearColor(d,d,d,1),i.needsRender=!0}}if(e.data&&e.data.type==="reset-to-sources"&&s.currentMode==="folder"&&x(),e.data&&e.data.type==="add-source"&&J.addSource(),e.data&&e.data.type==="reload-icloud-state"){const t=!!e.data.autoMount;y().then(()=>{t&&window.SourcesICloud&&window.SourcesICloud.tileState==="ghost"&&window.SourcesICloud.state&&window.SourcesICloud.state.state&&window.SourcesICloud.state.state.id===3&&window.SourcesICloud.handleGhostClick({automount:!0})})}e.data&&e.data.type==="open-folder"&&ViewLib.ECS&&ViewLib.ECS.isRampEnabled(6394)&&(l={folderId:e.data.folderId,folderName:e.data.folderName,folderPath:e.data.folderPath},n.length>0&&G()),e.data&&e.data.type==="reset-ws-throttle"&&_.resetThrottleState(),e.data&&e.data.type==="navigate-to-folder"&&window.initSourcesNavigate({path:e.data.path,nestedPath:e.data.nestedPath||null,fsid:e.data.fsid||null,sources:n,folderBrowser:a,enterFolderMode:I})});let D=!1,h=null;async function y(){h=null;try{const e=await fetch("/api/v1.0/sources",{_od4ApiName:"sources.list"});if(e.status===501)D=!0,n=[];else if(e.ok)n=(await e.json()).value||[];else throw new Error(`HTTP ${e.status}`)}catch(e){console.warn("Failed to load sources:",e),n=[],h=e||new Error("sources load failed")}if(window.SourcesICloud){try{await window.SourcesICloud.loadState()}catch(e){console.warn("Failed to load iCloud state:",e)}n.some(e=>e.syncRoot&&e.syncRoot.typeId===2)&&(window.SourcesICloud.tileState="not_shown",window.SourcesICloud.clearMountTimeout())}g.pruneProgress(n),ViewLib.ECS&&ViewLib.ECS.isRampEnabled(6394)&&l&&(s.currentMode="folder"),S(),ViewLib.ECS&&ViewLib.ECS.isRampEnabled(6394)&&G()}async function G(){if(!(!l||E)){E=!0;try{var e=l.folderId,o=l.folderName,i=l.folderPath;if(l=null,console.log("[Sources] handlePendingOpenFolder - folderId:",e,"folderName:",o,"folderPath:",i),!e){console.warn("[Sources] No folderId provided");return}var d=e&&typeof e=="string"&&e.indexOf("lid:")===0?parseInt(e.substring(4),10):null,t=n.find(function(r){return d!=null&&isFinite(d)&&r.localId===d?!0:r.id===e||r.driveItemId===e||r.itemId===e||r.path===i});if(!t&&i){var X=i.replace(/\\/g,"/").toLowerCase();t=n.find(function(r){if(!r.path)return!1;var re=r.path.replace(/\\/g,"/").toLowerCase();return X.startsWith(re+"/")}),t&&console.log("[Sources] Matched parent source for subfolder:",t.name,"path:",t.path)}if(console.log("[Sources] Matched source:",t?t.name:"NOT FOUND","from",n.length,"sources"),!t&&n.length>0&&console.log("[Sources] Available source IDs:",n.map(function(r){return{id:r.id,driveItemId:r.driveItemId,itemId:r.itemId,name:r.name,path:r.path}})),t){s.currentSourcePath=t.path||"";var M=t.isSyncedToDrive?"backed":"local",f=o||t.name;if(f&&f.indexOf(" / ")!==-1){var K=f.split(" / ");f=K[K.length-1]}var O=t.localId!=null?"lid:"+t.localId:null,ee=O&&e!==O,m=null;if(e&&typeof e=="string"&&e.indexOf("lid:")===0&&(m=parseInt(e.substring(4),10),isFinite(m)||(m=null)),ee&&m&&window.ViewLib&&ViewLib.SQL)try{var L=await ViewLib.SQL.named("folder_ancestors",{params:{target_local_id:m}});console.log("[Sources] Loaded ancestor chain:",L.length,"entries");var te=t.localId!=null?"lid:"+t.localId:t.id,oe=t.driveItemId&&t.driveItemId.indexOf("FSID_")===0?t.driveItemId.slice(5):null;a.pushPathEntry(te,t.name,oe);for(var P=0;P<L.length-1;P++){var B=L[P];a.pushPathEntry("lid:"+B.localId,B.name,B.fileSystemId)}a.setSourceContext(M,t.id),console.log("[Sources] Pre-populated breadcrumb path with",s.folderPath.length,"entries")}catch(r){console.warn("[Sources] Failed to load ancestors, using single-entry breadcrumb:",r)}console.log("[Sources] Entering folder mode - name:",f,"type:",M,"folderId:",e);var ne=t.driveItemId&&t.driveItemId.indexOf("FSID_")===0?t.driveItemId.slice(5):null;I(e,f,t.path,M,ne,t.id)}else console.warn("[Sources] Folder not found (folderId:",e,"folderPath:",i,") - staying on sources view"),console.warn("[Sources] Could not navigate to folder - no matching source and no fallback info")}finally{E=!1}}}function u(e,o){ViewLib.Messages.sendToastToShell(e,o?"error":"success",4e3)}function c(e){const o=document.createElement("div");return o.textContent=e,o.innerHTML}function C(e){const o=`${e}-shape`;return`<svg class="folder-mask-svg" viewBox="0 0 310 248" preserveAspectRatio="none" style="position:absolute;inset:0;width:100%;height:100%;pointer-events:none">
<defs><path id="${o}" d="M0,36C0,16.1,16.1,0,36,0h62.1c24.4,0,38.1,36.5,60,36.5h116c19.9,0,36,16.1,36,36v139.5c0,19.9-16.1,36-36,36H36C16.1,248,0,231.9,0,212V36Z"/></defs>
<clipPath id="${e}" clipPathUnits="objectBoundingBox"><use href="#${o}" transform="scale(0.003226,0.004032)"/></clipPath>
<svg x="0" y="0" width="310" height="37" overflow="hidden">
<use class="folder-cover-outline" href="#${o}" clip-path="url(#${e})" fill="none" stroke="transparent" stroke-width="2" vector-effect="non-scaling-stroke"/>
</svg>
<use class="folder-hc-outline" href="#${o}" clip-path="url(#${e})" fill="none" stroke="transparent" stroke-width="4" vector-effect="non-scaling-stroke"/>
</svg>`}window.SourcesView={render:S,showToast:u,closeContextMenu:function(){v.closeContextMenu()},positionContextMenu:function(e,o){v.positionContextMenu(e,o)}},document.addEventListener("keydown",function(e){(e.ctrlKey||e.metaKey)&&(e.key==="a"||e.key==="d")&&!(e.target instanceof Element&&e.target.closest("input,textarea"))&&e.preventDefault()}),Od4Strings.applyToDOM(),window.SourcesICloud&&window.SourcesICloud.loadState(),y(),_.init()})();