1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[82577],{26141:(e,r,t)=>{t.d(r,{Y:()=>o});var a=t(12115);function o(e,r){let t=(0,a.useRef)(null),o=(0,a.useRef)(e);return o.current=e,(0,a.useEffect)(()=>()=>{t.current&&clearTimeout(t.current)},[]),(0,a.useCallback)(function(){for(var e=arguments.length,a=Array(e),l=0;l<e;l++)a[l]=arguments[l];t.current&&clearTimeout(t.current),t.current=setTimeout(()=>{o.current(...a)},r)},[r])}},44991:(e,r,t)=>{t.d(r,{TA:()=>_,at:()=>n,c4:()=>f,kJ:()=>u,lp:()=>p});let a="snapshots";function o(e,r){return"".concat(e,"::").concat(r)}function l(){return new Promise((e,r)=>{if("undefined"==typeof indexedDB)return void r(Error("indexedDB unavailable"));let t=indexedDB.open("btw-workflow-folder-cache",1);t.onerror=()=>{var e;return r(null!=(e=t.error)?e:Error("indexedDB open failed"))},t.onsuccess=()=>e(t.result),t.onupgradeneeded=()=>{let e=t.result;e.objectStoreNames.contains(a)||e.createObjectStore(a)}})}function s(e){return new Promise((r,t)=>{e.onsuccess=()=>r(e.result),e.onerror=()=>{var r;return t(null!=(r=e.error)?r:Error("indexedDB request failed"))}})}async function n(e,r){try{let t=await l(),n=t.transaction(a,"readonly").objectStore(a),i=await s(n.get(o(e,r)));if(t.close(),!i||"object"!=typeof i||1!==i.schemaVersion||i.userId!==e||i.projectId!==r)return null;return i}catch(e){return null}}let i=null;async function d(){let e=Date.now();if(i&&e-i.atMs<15e3)return i.ok;let r=!0;try{var t;if("undefined"!=typeof navigator&&(null==(t=navigator.storage)?void 0:t.estimate)){let{quota:e,usage:t}=await navigator.storage.estimate();"number"==typeof e&&"number"==typeof t&&(r=e-t>0xa00000)}}catch(e){r=!0}return i={ok:r,atMs:e},r}async function c(e){try{if(!await d())return;let r=await l(),t=r.transaction(a,"readwrite");t.objectStore(a).put(e,o(e.userId,e.projectId)),await new Promise((e,r)=>{t.oncomplete=()=>e(),t.onerror=()=>{var e;return r(null!=(e=t.error)?e:Error("indexedDB tx failed"))},t.onabort=()=>{var e;return r(null!=(e=t.error)?e:Error("indexedDB tx aborted"))}}),r.close()}catch(e){}}async function u(e){try{let r=await l(),t=r.transaction(a,"readwrite"),o=t.objectStore(a),n=await s(o.getAllKeys()),i="".concat(e,"::");for(let e of n)"string"==typeof e&&e.startsWith(i)&&o.delete(e);await new Promise((e,r)=>{t.oncomplete=()=>e(),t.onerror=()=>{var e;return r(null!=(e=t.error)?e:Error("indexedDB tx failed"))},t.onabort=()=>{var e;return r(null!=(e=t.error)?e:Error("indexedDB tx aborted"))}}),r.close()}catch(e){}}async function _(e,r,a){var o;if("undefined"==typeof indexedDB)return;let{createClient:l}=await Promise.resolve().then(t.bind(t,96648)),s=l(),{data:{user:n}}=await s.auth.getUser(),i=null==n?void 0:n.id;if(!i)return;let d=function(e){let{_folderDiskHydration:r,migrationHints:t,...a}=e;return a}(r),u=new Date().toISOString(),_={schemaVersion:1,savedAtIso:u,serverSyncedAtIso:u,projectId:e,userId:i,folders:d.folders,assetFolderRefs:d.assets.map(e=>{var r;return{id:e.id,folder_id:null!=(r=e.folder_id)?r:null}}),folderScope:null!=(o=null==a?void 0:a.folderScope)?o:null};await c(_)}function f(e,r,t){return{assets:r.assetFolderRefs.map(r=>(function(e,r,t){let a=new Date().toISOString();return{id:r,project_id:e,name:"Offline placeholder",prompt:"",postprocessing_note:null,tool:"",category_id:null,legal_reference:null,legal_prompt:null,client_legal_prompt:null,client_legal_prompt_by:null,client_legal_prompt_at:null,version:"",media_path:null,thumb_path:null,ref_ids:null,parent_id:null,variant_group_id:null,content_sha256:null,folder_id:t,prompt_keep_local:!1,created_by:null,last_modified_by:null,width_px:null,height_px:null,resolution_dpi:null,aspect_ratio:null,media_format:null,media_kind:null,generation_seed:null,generation_model:null,generation_params:null,ai_card:null,source_kind:null,disclosure_status:null,disclosure_set_by:null,disclosure_set_at:null,c2pa_manifest_path:null,c2pa_ingested:null,verify_status:null,mux_asset_id:null,mux_playback_id:null,mux_status:null,mux_fps:null,mux_duration:null,mux_aspect:null,archived_at:null,verdict:null,verdict_reason:null,verdict_by:null,verdict_at:null,deck_id:null,due_date:null,due_state:"pending",due_all_day:!0,drive_file_id:null,drive_owner_user_id:null,drive_modified_time:null,drive_last_synced_at:null,drive_sync_status:"ok",approved_for_share:!1,approved_for_share_at:null,approved_for_share_by:null,created_at:a,updated_at:a}})(e,r.id,r.folder_id)),folders:r.folders,assetRefs:{sources:new Map,targets:new Map},positions:{},pinnedAssetIds:new Set,connections:[],mediaUrls:{},missingPositionIds:[],canvasNotes:[],myStarredAssetIds:[],teamStarredAssetIds:[],_folderDiskHydration:{reason:t,diskSavedAtIso:r.savedAtIso,serverSyncedAtIso:r.serverSyncedAtIso,folderScope:r.folderScope}}}function p(e){if("PGRST205"===(e&&"object"==typeof e&&"code"in e&&"string"==typeof e.code?e.code:null))return!0;let r=e instanceof Error?e.message:String(e);return/PGRST205/i.test(r)}},82577:(e,r,t)=>{t.d(r,{q:()=>k,J:()=>y});var a=t(12115),o=t(99776),l=t(53455),s=t(19036),n=t(97850),i=t(96648),d=t(34773),c=t(26141),u=t(44991),_=t(53449),f=t(54112);let p=(0,d.h)("features/workflow-data"),h="Asset folder assignments are unavailable: the assets.folder_id column is missing. Run Supabase migrations (asset_folders).",w="id, project_id, name, prompt, tool, category_id, legal_reference, legal_prompt, client_legal_prompt, version, media_path, thumb_path, ref_ids, parent_id, variant_group_id, created_by, last_modified_by, width_px, height_px, resolution_dpi, aspect_ratio, media_format, generation_seed, generation_model, postprocessing_note, ai_card, created_at, updated_at, deck_id, verdict, verdict_reason, approved_for_share";function m(e,r){let t="string"==typeof(null==e?void 0:e.code)?e.code:"",a="str
1ing"==typeof(null==e?void 0:e.message)?e.message:String(null!=e?e:""),o=RegExp(r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),"i");return!!("PGRST205"===t&&o.test(a)||/schema cache/i.test(a)&&o.test(a)||/could not find the table/i.test(a)&&o.test(a))}function g(e){let r="string"==typeof(null==e?void 0:e.code)?e.code:"",t="string"==typeof(null==e?void 0:e.message)?e.message:String(null!=e?e:"");return!!("42703"===r&&/folder_id/i.test(t))}async function v(e,r){var t,a,o,l,s,n,i,c,u,v,b,y,k,P,S;let j=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e=>(0,_.mv)(e,3600,_.Lj),I=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},x=(0,d.r_)();if(p.debug("load workflow payload start",{event:"workflow.load",phase:"start",requestId:x}),!e)return p.info("workflow load skipped: missing projectId",{event:"workflow.load",phase:"branch",branch:"missingProjectId",requestId:x}),{assets:[],folders:[],assetRefs:{sources:new Map,targets:new Map},assetInputCounts:new Map,positions:{},pinnedAssetIds:new Set,connections:[],mediaUrls:{},missingPositionIds:[],canvasNotes:[],myStarredAssetIds:[],teamStarredAssetIds:[]};let q=[],[{data:R,error:F},{data:A,error:D}]=await Promise.all([r.from("assets").select("id, project_id, name, prompt, tool, category_id, legal_reference, legal_prompt, client_legal_prompt, version, media_path, thumb_path, ref_ids, parent_id, variant_group_id, created_by, last_modified_by, width_px, height_px, resolution_dpi, aspect_ratio, media_format, generation_seed, generation_model, postprocessing_note, created_at, updated_at, folder_id, archived_at, verdict, verdict_reason, deck_id, approved_for_share").eq("project_id",e).order("created_at",{ascending:!0}).limit(2e3),r.from("asset_folders").select("id, project_id, parent_id, name, sort_order, created_at, created_by, naming_template").eq("project_id",e).order("sort_order",{ascending:!0}).order("name",{ascending:!0})]),E=[];if(D){if((0,d.RF)(D))throw D;if(m(D,"asset_folders"))p.warn("load workflow folders skipped: asset_folders not in schema cache",{event:"workflow.load",phase:"branch",branch:"foldersQueryDegraded",requestId:x,error:(0,d.P5)(D)}),E=[],q.push("Folder tables are not migrated yet. Run Supabase migrations (asset_folders).");else throw p.error("load workflow folders failed",{event:"workflow.load",phase:"error",branch:"foldersQuery",requestId:x,error:(0,d.P5)(D)}),D}else E=null!=A?A:[];let Q=[];if(F){if((0,d.RF)(F))throw F;if(function(e){let r="string"==typeof(null==e?void 0:e.code)?e.code:"",t="string"==typeof(null==e?void 0:e.message)?e.message:String(null!=e?e:"");return!!("42703"===r&&/archived_at/i.test(t))}(F)){p.warn("load workflow assets retried without archived_at filter",{event:"workflow.load",phase:"branch",branch:"assetsQueryDegradedArchivedAt",requestId:x,error:(0,d.P5)(F)});let o=await r.from("assets").select("id, project_id, name, prompt, tool, category_id, legal_reference, legal_prompt, client_legal_prompt, version, media_path, thumb_path, ref_ids, parent_id, variant_group_id, created_by, last_modified_by, width_px, height_px, resolution_dpi, aspect_ratio, media_format, generation_seed, generation_model, postprocessing_note, created_at, updated_at, folder_id, verdict, verdict_reason, deck_id, approved_for_share").eq("project_id",e).order("created_at",{ascending:!0}).limit(2e3);if(o.error)if(g(o.error)){q.push(h);let a=await r.from("assets").select(w).eq("project_id",e).order("created_at",{ascending:!0}).limit(2e3);if(a.error)throw p.error("load workflow assets retry (no archived_at, no folder_id) failed",{event:"workflow.load",phase:"error",branch:"assetsQueryRetry2",requestId:x,error:(0,d.P5)(a.error)}),a.error;Q=null!=(t=a.data)?t:[]}else throw p.error("load workflow assets retry (no archived_at) failed",{event:"workflow.load",phase:"error",branch:"assetsQueryRetryArchivedAt",requestId:x,error:(0,d.P5)(o.error)}),o.error;else Q=null!=(a=o.data)?a:[]}else if(g(F)){p.warn("load workflow assets retried without folder_id column",{event:"workflow.load",phase:"branch",branch:"assetsQueryDegradedFolderId",requestId:x,error:(0,d.P5)(F)}),q.push(h);let t=await r.from("assets").select(w).eq("project_id",e).order("created_at",{ascending:!0}).limit(2e3);if(t.error)throw(0,d.RF)(t.error)||p.error("load workflow assets retry failed",{event:"workflow.load",phase:"error",branch:"assetsQueryRetry",requestId:x,error:(0,d.P5)(t.error)}),t.error;Q=(null!=(o=t.data)?o:[]).map(e=>({...e,folder_id:null}))}else if(function(e){let r="string"==typeof(null==e?void 0:e.code)?e.code:"",t="string"==typeof(null==e?void 0:e.message)?e.message:String(null!=e?e:"");return!!("42703"===r&&/verdict/i.test(t))}(F)){p.warn("load workflow assets retried without verdict column",{event:"workflow.load",phase:"branch",branch:"assetsQueryDegradedVerdict",requestId:x,error:(0,d.P5)(F)});let t=await r.from("assets").select("id, project_id, name, prompt, tool, category_id, legal_reference, legal_prompt, client_legal_prompt, version, media_path, thumb_path, ref_ids, parent_id, variant_group_id, created_by, last_modified_by, width_px, height_px, resolution_dpi, aspect_ratio, media_format, generation_seed, generation_model, postprocessing_note, created_at, updated_at, folder_id, archived_at, deck_id, approved_for_share").eq("project_id",e).order("created_at",{ascending:!0}).limit(2e3);if(t.error)throw(0,d.RF)(t.error)||p.error("load workflow assets retry (no verdict) failed",{event:"workflow.load",phase:"error",branch:"assetsQueryRetryVerdict",requestId:x,error:(0,d.P5)(t.error)}),t.error;Q=(null!=(l=t.data)?l:[]).map(e=>({...e,verdict:null,verdict_reason:null}))}else if(function(e){let r="string"==typeof(null==e?void 0:e.code)?e.code:"",t="string"==typeof(null==e?void 0:e.message)?e.message:String(null!=e?e:"");return!!("42703"===r&&/approved_for_share/i.test(t))}(F)){p.warn("load workflow assets retried without approved_for_share column",{event:"workflow.load",phase:"branch",branch:"assetsQueryDegradedApprovedForShare",requestId:x,error:(0,d.P5)(F)});let t=await r.from("assets").select("id, project_id, name, prompt, tool, category_id, legal_reference, legal_prompt, client_legal_prompt, version, media_path, thumb_path, ref_ids, parent_id, variant_group_id, created_by, last_modified_by, width_px, height_px, resolution_dpi, aspect_ratio, media_format, generation_seed, generation_model, postprocessing_note, created_at, updated_at, folder_id, archived_at, verdict, verdict_reason, deck_id").eq("project_id",e).order("created_at",{ascending:!0}).limit(2e3);if(t.error)throw(0,d.RF)(t.error)||p.error("load workflow assets retry (no approved_for_share) failed",{event:"workflow.load",phase:"error",branch:"assetsQueryRetryApprovedForShare",requestId:x,error:(0,d.P5)(t.error)}),t.error;Q=(null!=(s=t.data)?s:[]).map(e=>({...e,approved_for_share:!1}))}else throw p.error("load workflow assets failed",{event:"workflow.load",phase:"error",branch:"assetsQuery",requestId:x,error:(0,d.P5)(F)}),F}else Q=null!=R?R:[];(Q=Q.filter(e=>!e.archived_at)).length>=2e3&&p.warn("workflow asset list reached safety cap; older items truncated",{event:"workflow.load",phase:"branch",branch:"assetLimitReached",requestId:x,projectId:e,limit:2e3});let B=Q.map(e=>e.id),U={},M=new Set,C=[],T=null!=(n=I.viewerId)?n:null;if(null===T&&void 0===I.viewerId){let{data:{user:e}}=await r.auth.getUser();T=null!=(i=null==e?void 0:e.id)?i:null}let[K,N,O,L,V,G]=await Promise.all([r.from("asset_connections").select("id, project_id, from_asset_id, to_asset_id, color, kind, created_at").eq("project_id",e),r.from("workflow_canvas_notes").select("id, project_id, x, y, body, linked_asset_id, link_color, created_by, updated_by, created_at, updated_at").eq("project_id",e),B.length?r.from("asset_positions").select("asset_id, x, y, pinned_by_user").in("asset_id",B):Promise.resolve({data:[],error:null}),B.length?r.from("asset_stars").select("asset_id, user_id").in("asset_id",B):Promise.resolve({data:[],error:null}),r.from("asset_asset_refs").select("source_asset_id, target_asset_id").eq("project_id",e),r.from("asset_inputs").select("asset_id").eq("project_id",e)]);if(K.error)throw(0,d.RF)(K.error)||p.error("load workflow connections failed",{event:"workflow.load",phase:"error",branch:"connectionsQuery",requestId:x,error:(0,d.P5)(K.error)}),K.error;if(N.error)throw(0,d.RF)(N.error)||p.error("load workflow canvas notes failed",{event:"workflow.load",phase:"error",branch:"canvasNotesQuery",requestId:x,error:(0,d.P5)(N.error)}),N.error;if(O.error)throw(0,d.RF)(O.error)||p.error("load workflow positions failed",{event:"workflow.load",phase:"error",branch:"positionsQuery",requestId:x,error:(0,d.P5)(O.error)}),O.error;if(L.error)throw(0,d.RF)(L.error)||p.error("load workflow stars failed",{event:"workflow.load",phase:"error",branch:"starsQuery",requestId:x,error:(0,d.P5)(L.error)}),L.error;if(V.error)throw(0,d.RF)(V.error)||p.error("load workflow asset refs failed",{event:"workflow.load",phase:"error",branch:"refsQuery",requestId:x,error:(0,d.P5)(V.error)}),V.error;let W=new Map;if(G.error){if((0,d.RF)(G.error))throw G.error;m(G.error,"asset_inputs")?(q.push("Input lists are not migrated yet. Run Supabase migrations (asset_inputs)."),p.warn("load workflow input lists skipped: asset_inputs not in schema cache",{event:"workflow.load",phase:"branch",branch:"assetInputsQueryDegraded",requestId:x,error:(0,d.P5)(G.error)})):p.warn("load workflow input lists failed",{event:"workflow.load",phase:"branch",branch:"assetInputsQueryFailed",requestId:x,error:(0,d.P5)(G.error)})}else for(let e of null!=(c=G.data)?c:[])W.set(e.asset_id,(null!=(u=W.get(e.asset_id))?u:0)+1);let J=O.data;if(B.length){let e=new Set(null!=(v=null==J?void 0:J.map(e=>e.asset_id))?v:[]);
1null==J||J.forEach(e=>{U[e.asset_id]={x:e.x,y:e.y},e.pinned_by_user&&M.add(e.asset_id)});let r=40,t=40,a=0;for(let o of Q)U[o.id]||(U[o.id]={x:r,y:t},e.has(o.id)||C.push(o.id),(a+=1)>=4?(a=0,r=40,t+=190):r+=200)}let Y=null!=(b=K.data)?b:[],$=null!=(y=N.data)?y:[],H=null!=(k=L.data)?k:[],z=T?H.filter(e=>e.user_id===T).map(e=>e.asset_id).filter(Boolean):[],X=[...new Set(H.map(e=>e.asset_id).filter(Boolean))],Z={},ee=Q.filter(e=>!!e.media_path),er=ee.filter(e=>(0,f.WA)(e)),et=ee.filter(e=>!(0,f.WA)(e));if(er.length){let e=Array.from(new Set(er.map(e=>e.media_path)));try{let t=await (0,_.dB)(e,3600,r);for(let e of er){let r=t[e.media_path];r&&(Z[e.id]=r)}let a=er.filter(e=>!Z[e.id]);a.length&&await Promise.all(a.map(async e=>{try{let r=await (0,_.mv)(e.media_path,3600);r&&(Z[e.id]=r)}catch(r){p.warn("video signed-url fallback failed for asset",{event:"workflow.load",phase:"branch",branch:"videoSignedUrlFallbackFailed",requestId:x,assetId:e.id,error:(0,d.P5)(r)})}}))}catch(e){p.warn("batch signed video urls failed; falling back to per-asset",{event:"workflow.load",phase:"branch",branch:"videoSignedUrlsBatchFailed",requestId:x,error:(0,d.P5)(e)}),await Promise.all(er.map(async e=>{try{let r=await (0,_.mv)(e.media_path,3600);r&&(Z[e.id]=r)}catch(r){p.warn("video signed-url generation failed for asset",{event:"workflow.load",phase:"branch",branch:"videoSignedUrlFailed",requestId:x,assetId:e.id,error:(0,d.P5)(r)})}}))}}if(et.length){let e=et.filter(e=>!!e.thumb_path),t=et.filter(e=>!e.thumb_path);if(e.length){let t=e.map(e=>e.thumb_path);try{let a=await (0,_.dB)(t,3600,r);for(let r of e){let e=a[r.thumb_path];e&&(Z[r.id]=e)}let o=e.filter(e=>!Z[e.id]);o.length&&await Promise.all(o.map(async e=>{try{let r=await (0,_.mv)(e.thumb_path,3600);r&&(Z[e.id]=r)}catch(r){p.warn("thumb signed-url fallback failed for asset",{event:"workflow.load",phase:"branch",branch:"thumbSignedUrlFallbackFailed",requestId:x,assetId:e.id,error:(0,d.P5)(r)})}}))}catch(r){p.warn("batch signed thumb urls failed; falling back to per-asset",{event:"workflow.load",phase:"branch",branch:"thumbSignedUrlsBatchFailed",requestId:x,error:(0,d.P5)(r)}),await Promise.all(e.map(async e=>{try{let r=await (0,_.mv)(e.thumb_path,3600);r&&(Z[e.id]=r)}catch(r){p.warn("thumb signed-url generation failed for asset",{event:"workflow.load",phase:"branch",branch:"thumbSignedUrlFailed",requestId:x,assetId:e.id,error:(0,d.P5)(r)})}}))}}if(t.length){let e=t.map(e=>e.media_path),a=null!=(P=I.signUrlsBatch)?P:e=>(0,_.dB)(e,3600,r,_.Lj);try{let r=await a(e);for(let e of t){let t=r[e.media_path];t&&(Z[e.id]=t)}let o=t.filter(e=>!Z[e.id]);o.length&&await Promise.all(o.map(async e=>{try{let r=await j(e.media_path);r&&(Z[e.id]=r)}catch(r){p.warn("media signed-url fallback failed for asset",{event:"workflow.load",phase:"branch",branch:"signedUrlFallbackFailed",requestId:x,assetId:e.id,error:(0,d.P5)(r)})}}))}catch(e){p.warn("batch signed media urls failed; falling back to per-asset",{event:"workflow.load",phase:"branch",branch:"signedUrlsBatchFailed",requestId:x,error:(0,d.P5)(e)}),await Promise.all(t.map(async e=>{try{let r=await j(e.media_path);r&&(Z[e.id]=r)}catch(r){p.warn("media signed-url generation failed for asset",{event:"workflow.load",phase:"branch",branch:"signedUrlFailed",requestId:x,assetId:e.id,error:(0,d.P5)(r)})}}))}}}p.info("load workflow payload success",{event:"workflow.load",phase:"success",requestId:x,assets:Q.length,connections:Y.length});let{sources:ea,targets:eo}=function(e){let r=new Map,t=new Map;for(let l of e){var a,o;let e=null!=(a=r.get(l.source_asset_id))?a:[];e.push(l.target_asset_id),r.set(l.source_asset_id,e);let s=null!=(o=t.get(l.target_asset_id))?o:[];s.push(l.source_asset_id),t.set(l.target_asset_id,s)}return{sources:r,targets:t}}((null!=(S=V.data)?S:[]).map(r=>({source_asset_id:r.source_asset_id,target_asset_id:r.target_asset_id,project_id:e,created_by:null,created_at:""})));return{assets:Q,folders:E,assetRefs:{sources:ea,targets:eo},assetInputCounts:W,positions:U,pinnedAssetIds:M,connections:Y,mediaUrls:Z,missingPositionIds:C,canvasNotes:$,myStarredAssetIds:z,teamStarredAssetIds:X,...q.length?{migrationHints:q}:{}}}let b=(0,d.h)("features/use-workflow-data");function y(e){var r;let t=(0,s.D)(),{data:_}=(0,n.i)(),f=(0,o.jE)(),p=(0,a.useRef)(new Set),h=(0,a.useRef)(null);(0,a.useEffect)(()=>{var e;h.current=null!=(e=null==_?void 0:_.id)?e:null},[null==_?void 0:_.id]);let w=(0,a.useCallback)(()=>{e&&f.invalidateQueries({queryKey:["workflow",e]})},[f,e]),m=(0,c.Y)(w,150),g=(0,a.useCallback)(e=>{var r;let t=h.current;if(!t)return!1;let a=e.new;if(!a)return!1;let o=null!=(r=a.updated_by)?r:a.last_modified_by;return!!(o&&o===t)},[]);(0,a.useEffect)(()=>
1{if(!e||!t)return;let r=(0,i.createClient)(),a=e=>{g(e)||w()},o=!1,l=r.channel("workflow-pg:".concat(e)).on("postgres_changes",{event:"*",schema:"public",table:"assets",filter:"project_id=eq.".concat(e)},e=>{var r;let t=null==(r=e.new)?void 0:r.id;if(t&&!p.current.has(t))return void w();g(e)||w()}).on("postgres_changes",{event:"*",schema:"public",table:"asset_connections",filter:"project_id=eq.".concat(e)},a).on("postgres_changes",{event:"*",schema:"public",table:"workflow_canvas_notes",filter:"project_id=eq.".concat(e)},a).on("postgres_changes",{event:"*",schema:"public",table:"asset_positions",filter:"project_id=eq.".concat(e)},e=>{var r,t,a;if(g(e))return;let o=null!=(a=null==(r=e.new)?void 0:r.asset_id)?a:null==(t=e.old)?void 0:t.asset_id;o&&p.current.has(o)&&m()}).on("postgres_changes",{event:"*",schema:"public",table:"asset_folders",filter:"project_id=eq.".concat(e)},w).on("postgres_changes",{event:"*",schema:"public",table:"asset_assignees",filter:"project_id=eq.".concat(e)},e=>{var r,t,a;let o=null!=(a=null==(r=e.new)?void 0:r.asset_id)?a:null==(t=e.old)?void 0:t.asset_id;o&&p.current.has(o)&&w()}).on("postgres_changes",{event:"*",schema:"public",table:"asset_comments",filter:"project_id=eq.".concat(e)},r=>{var t,a,o,l,s,n;if(!e)return;let i=null!=(s=null==(t=r.new)?void 0:t.project_id)?s:null==(a=r.old)?void 0:a.project_id;if(i&&i!==e)return;let d=null!=(n=null==(o=r.new)?void 0:o.asset_id)?n:null==(l=r.old)?void 0:l.asset_id;(!d||p.current.has(d))&&(f.invalidateQueries({queryKey:["asset-comment-counts",e]}),d&&f.invalidateQueries({queryKey:["asset-comments",d]}))}).subscribe(r=>{"SUBSCRIBED"===r&&(o&&(b.info("workflow realtime resubscribed; bumping query",{event:"workflow.realtime",phase:"branch",branch:"resubscribed",projectId:e}),w()),o=!0)});return()=>{l.unsubscribe()}},[e,t,w,m,f]);let y=(0,l.I)({queryKey:["workflow",e],queryFn:async()=>{var r;let t=(0,d.r_)();b.debug("workflow query start",{event:"workflow.query",phase:"start",requestId:t});let a=(0,i.createClient)(),o=null!=(r=null==_?void 0:_.id)?r:null;try{let r=await v(e,a,void 0,{viewerId:o});return o&&e&&(0,u.TA)(e,r),b.info("workflow query success",{event:"workflow.query",phase:"success",requestId:t,assets:r.assets.length}),r}catch(r){if(o&&e){let a=await (0,u.at)(o,e);if(a){let o=(0,u.lp)(r)?"degraded_schema":!function(e){if(e instanceof TypeError&&("Failed to fetch"===e.message||"Load failed"===e.message)||e instanceof DOMException&&"AbortError"===e.name)return!0;let r=e instanceof Error?e.message:String(e);return/failed to fetch|networkerror|load failed|network request failed/i.test(r)}(r)?"fetch_failed":"offline";return b.warn("workflow query failed; using persisted folder snapshot",{event:"workflow.query",phase:"branch",branch:"cache_fallback",requestId:t,reason:o,error:(0,d.P5)(r)}),(0,u.c4)(e,a,o)}}throw r}},enabled:!!e&&t,refetchInterval:6e4});return(0,a.useEffect)(()=>{var e;let r=null==(e=y.data)?void 0:e.assets;r&&(p.current=new Set(r.map(e=>e.id)))},[null==(r=y.data)?void 0:r.assets]),y}function k(e){let r=(0,o.jE)();return()=>{b.debug("invalidate workflow query",{event:"workflow.invalidate",phase:"success",requestId:(0,d.r_)(),branch:e?"withProjectId":"withoutProjectId"}),r.invalidateQueries({queryKey:["workflow",e]})}}}}]);
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.