@overmap-ai/core 1.0.78-view-sets.26 → 1.0.78-view-sets.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -60,10 +60,12 @@ function O(t) {
60
60
  },
61
61
  initialize: (h, p) => {
62
62
  h.instances = {};
63
- for (const A of p.payload) {
64
- const S = t(A);
65
- h.instances[S] = A;
63
+ const A = /* @__PURE__ */ new Set();
64
+ for (const S of p.payload) {
65
+ const g = t(S);
66
+ A.add(g), h.instances[g] = S;
66
67
  }
68
+ A.size !== p.payload.length && console.warn("duplicate ids detected when initializing model instances.");
67
69
  },
68
70
  getInitialState: (h) => ({
69
71
  ...h,
@@ -5223,7 +5225,7 @@ class n_ extends De {
5223
5225
  method: u.GET,
5224
5226
  url: "/document-attachments/",
5225
5227
  queryParams: {
5226
- document__project__owner_organization: s
5228
+ document__project__organization_owner: s
5227
5229
  },
5228
5230
  blocks: [],
5229
5231
  blockers: []
@@ -5313,7 +5315,7 @@ class c_ extends v {
5313
5315
  method: u.GET,
5314
5316
  url: "/documents/",
5315
5317
  queryParams: {
5316
- project__owner_organization: e
5318
+ project__organization_owner: e
5317
5319
  },
5318
5320
  blockers: [],
5319
5321
  blocks: []
@@ -1,11 +1,11 @@
1
- (function(a,z){typeof exports=="object"&&typeof module<"u"?z(exports,require("@redux-offline/redux-offline/lib/types"),require("@reduxjs/toolkit"),require("superagent"),require("uuid"),require("file-saver"),require("@redux-offline/redux-offline"),require("@redux-offline/redux-offline/lib/defaults"),require("buffer"),require("localforage"),require("redux-persist-migrate"),require("@overmap-ai/forms"),require("idb"),require("jwt-decode"),require("dependency-graph"),require("@tiptap/core")):typeof define=="function"&&define.amd?define(["exports","@redux-offline/redux-offline/lib/types","@reduxjs/toolkit","superagent","uuid","file-saver","@redux-offline/redux-offline","@redux-offline/redux-offline/lib/defaults","buffer","localforage","redux-persist-migrate","@overmap-ai/forms","idb","jwt-decode","dependency-graph","@tiptap/core"],z):(a=typeof globalThis<"u"?globalThis:a||self,z(a["overmap-core"]={},null,a.toolkit,a.request,a.uuid,a.fileSaver,a.reduxOffline,a.offlineConfig,null,a.localforage,a.createMigration,null,a.idb,a.jwtDecode,a.dependencyGraph))})(this,function(a,z,d,$e,Ge,om,lm,lc,bP,hm,mm,PP,pm,Am,ym){"use strict";var SP=Object.defineProperty;var gP=(a,z,d)=>z in a?SP(a,z,{enumerable:!0,configurable:!0,writable:!0,value:d}):a[z]=d;var S=(a,z,d)=>gP(a,typeof z!="symbol"?z+"":z,d);var um;const hc=Object.freeze([]),mc=Object.freeze({});var pc=(t=>(t[t.GUEST=0]="GUEST",t[t.BASIC=2]="BASIC",t[t.ADMIN=4]="ADMIN",t))(pc||{}),h=(t=>(t.GET="GET",t.POST="POST",t.PATCH="PATCH",t.PUT="PUT",t.DELETE="DELETE",t))(h||{}),Ac=(t=>(t.Issue="issue",t.Asset="asset",t.AssetType="asset_type",t.Project="project",t.Document="document",t))(Ac||{}),Gt=(t=>(t[t.LOWEST=0]="LOWEST",t[t.LOW=2]="LOW",t[t.MEDIUM=4]="MEDIUM",t[t.HIGH=6]="HIGH",t[t.HIGHEST=8]="HIGHEST",t))(Gt||{}),Lt=(t=>(t[t.BACKLOG=0]="BACKLOG",t[t.SELECTED=2]="SELECTED",t[t.DONE=4]="DONE",t))(Lt||{}),E=(t=>(t.STATUS="status",t.PRIORITY="priority",t.CATEGORY="category",t.DESCRIPTION="description",t.TITLE="title",t.ASSIGNED_TO="assigned_to",t.DUE_DATE="due_date",t))(E||{});const fm=Lt.BACKLOG,Sm=Gt.MEDIUM,yc=6e4;function I(t){return{addOne:(p,A)=>{const y=t(A.payload);p.instances[y]=A.payload},addMany:(p,A)=>{for(const y of A.payload){const b=t(y);p.instances[b]=y}},setOne:(p,A)=>{const y=t(A.payload);p.instances[y]=A.payload},setMany:(p,A)=>{for(const y of A.payload){const b=t(y);p.instances[b]=y}},updateOne:(p,A)=>{const y=t(A.payload);p.instances[y]=A.payload},updateMany:(p,A)=>{for(const y of A.payload){const b=t(y);p.instances[b]=y}},deleteOne:(p,A)=>{delete p.instances[A.payload]},deleteMany:(p,A)=>{for(const y of A.payload)delete p.instances[y]},initialize:(p,A)=>{p.instances={};for(const y of A.payload){const b=t(y);p.instances[b]=y}},getInitialState:p=>({...p,instances:{}})}}function gm(){return{initializeSelection:(m,u)=>{m.selection=Array.from(new Set(u.payload))},selectOne:(m,u)=>{new Set(m.selection).has(u.payload)||m.selection.push(u.payload)},selectMany:(m,u)=>{const l=new Set(m.selection);for(const p of u.payload)l.has(p)||l.add(p);m.selection=Array.from(l)},unselectOne:(m,u)=>{const l=new Set(m.selection);l.has(u.payload)&&(l.delete(u.payload),m.selection=Array.from(l))},unselectMany:(m,u)=>{const l=new Set(m.selection);for(const p of u.payload)l.has(p)&&l.delete(p);m.selection=Array.from(l)},toggleOne:(m,u)=>{const l=new Set(m.selection);l.has(u.payload)?l.delete(u.payload):l.add(u.payload),m.selection=Array.from(l)},toggleMany:(m,u)=>{const l=new Set(m.selection);for(const p of u.payload)l.has(p)?l.delete(p):l.add(p);m.selection=Array.from(l)},getInitialState:m=>({...m,selection:[]})}}const Ye="versioning",F=d.createAction("RESET"),M=d.createAction("RESET_PROJECT_STATE"),_=d.createAction("RESET_ORGANIZATION_STATE");um=Symbol.toStringTag;class fc{constructor(){S(this,um,"Promise");S(this,"_promise");S(this,"_resolve");S(this,"_reject");S(this,"_state","pending");this._resolve=null,this._reject=null,this._promise=new Promise((e,s)=>{this._resolve=e,this._reject=s})}get state(){return this._state}then(e,s){return this._promise.then(e,s)}catch(e){return this._promise.catch(e)}resolve(e){if(!this._resolve)throw new Error("No resolve callback");this._resolve(e),this._state="fulfilled"}reject(e){if(!this._reject)throw e;this._reject(e),this._state="rejected"}finally(e){throw new Error("`finally` not implemented")}}const bm=t=>({type:"Point",coordinates:t}),Pm=t=>({type:"MultiPoint",coordinates:t}),Fm=(t,e)=>t[0]===e[0]&&t[1]===e[1];let Nt=!1;["true","1"].includes("".toLowerCase())&&(Nt=!0);function Tm(t,e){if(t===e)return!0;if(typeof t!=typeof e)return!1;const s=Object.keys(t),i=Object.keys(e),c=s.length;if(c!==i.length)return!1;for(let n=0;n<c;n++){const r=s[n];if(!Object.prototype.hasOwnProperty.call(e,r)||t[r]!==e[r])return!1}return!0}function Ht(t){const e={};return function(){const s=Array.prototype.slice.call(arguments);return s in e?(Nt&&console.debug(`Memoization debug: Using memorized return value for ${t.toString()}(`,s,")"),e[s]):(Nt&&console.debug(`Memoization debug: Cache miss! Memoizing ${t.toString()}(`,s,")"),e[s]=t.apply(this,s))}}function Im(t,e){if(t.length!==e.length)return!1;for(let s=0;s<t.length;s++)if(t[s]!==e[s])return!1;return!0}const g=t=>t.length===0?hc:t,lt=t=>Object.keys(t).length===0?mc:t,Sc=Ht(t=>{if(!t)return"";const e=new Date(t),s=e.getFullYear()===Wt.getFullYear(),i={day:"numeric",month:"short"};return s||(i.year="numeric"),e.toLocaleDateString([],i)}),Om=new Intl.RelativeTimeFormat([],{style:"long",numeric:"auto"}),_m=1e3*86400,Wt=new Date,Rm=t=>new Date(t).toDateString()===Wt.toDateString(),vm=Ht((t,e,s)=>{const i=Math.round((new Date(t).getTime()-Wt.getTime())/_m);return i<e||i>s?Sc(t):Om.format(i,"days")});function wm(t){return new Uint8Array(t).reduce((s,i)=>s+i.toString(16).padStart(2,"0"),"")}const Kt=async(t,e)=>{e||(e=await Le(t));let s=t.type;if(s.includes("/")&&(s=s.split("/")[1]),!s)throw new Error(`Could not extract file type from ${t.type}`);return`${e}.${s}`};function Le(t){return new Promise((e,s)=>{const i=new FileReader;i.onload=()=>{const c=i.result;if(!c){s(new Error("FileReader did not return a valid ArrayBuffer."));return}crypto.subtle.digest("SHA-1",c).then(n=>{const r=wm(n);e(r)})},i.readAsArrayBuffer(t)})}function Mm(t){if(!t.name||!t.type||!t.size){const e="File has no name, type, and/or size";throw new Error(e)}return`${t.name}&${t.type}${t.size}`}function gc(t,e){return new File([t],e,{type:t.type})}function Em(t,e){const s=document.createElement("a");s.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(e)),s.setAttribute("download",t),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}const jm=async t=>{const e={};for(const s of t){const i=await Le(s);e[i]={sha1:i,extension:s.name.split(".").pop()||"",file_type:s.type,size:s.size}}return Object.values(e)},bc=async t=>(await fetch(t)).blob(),qm=t=>new Promise((e,s)=>{const i=new FileReader;i.onloadend=()=>{var c;e(((c=i.result)==null?void 0:c.toString())||"")},i.readAsDataURL(t)});function Vm(t){const e=new Blob([t]);om.saveAs(e,t.name)}const Pc={};function zm(t,e,s,...i){const c=Pc[t];let n=!1;c?c[e]||(c[e]=!0,n=!0):(Pc[t]={[e]:!0},n=!0),n&&console[s](...i)}const Fc=["created_at","updated_at","index","revision"];function T(t){return{...t,uuid:Ge.v4()}}function Tc(t){const e={};for(const s of t)e[s.uuid]=s;return e}function Um(t,e=void 0,s=255){let i=t.replace(/[^a-z0-9_\-.]/gi,"_").replace(/_{2,}/g,"_");if(!e){const n=t.split(".");n.length>1&&(e=n[n.length-1])}e&&!e.startsWith(".")&&(e="."+e);const c=e?e.length:0;return i.length+c>s&&(i=i.slice(0,s-c)+(e||"")),i}function Dm(t){return t.toLowerCase().replace(" ","-")}function Cm(t,e=!1){return t.normalize("NFKD").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,e?"_":"-")}function km(t,e){if(t.length<=e)return t;const s=t.slice(0,e-1);return s.slice(0,s.lastIndexOf(" "))+"…"}const f=t=>e=>s=>t(s,e);function Ic(t,e,s){return s.findIndex(i=>i.uuid===t.uuid)===e}function Bm(t,e,s){return s.findIndex(i=>i.file_sha1===t.file_sha1)===e}const $m=/^.+@.+\..+$/;function v(t){const e={...t};for(const s of[...Fc,"created_by"])s in e&&delete e[s];return e}const C=I(t=>t.uuid),Oc=C.getInitialState({}),Yt=d.createSlice({name:"agents",initialState:Oc,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Oc)),reducers:{initializeConversations:C.initialize,addConversation:C.addOne,addConversations:C.addMany,setConversation:C.setOne,setConversations:C.setMany,updateConversation:C.updateOne,updateConversations:C.updateMany,deleteConversation:C.deleteOne,deleteConversations:C.deleteMany}}),{initializeConversations:_c,addConversation:Rc,addConversations:Gm,setConversation:vc,setConversations:Lm,updateConversation:wc,updateConversations:Nm,deleteConversation:Hm,deleteConversations:Wm}=Yt.actions,Jt=t=>t.agentsReducer.instances,Km=d.createSelector([Jt],t=>Object.values(t)),Ym=f(d.createSelector([Jt,(t,e)=>e],(t,e)=>t[e])),Mc=Yt.reducer,k=I(t=>t.uuid),Ec=k.getInitialState({}),Zt=d.createSlice({name:"assetAttachments",initialState:Ec,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Ec)),reducers:{initializeAssetAttachments:k.initialize,addAssetAttachment:k.addOne,addAssetAttachments:k.addMany,setAssetAttachment:k.setOne,setAssetAttachments:k.setMany,updateAssetAttachment:k.updateOne,updateAssetAttachments:k.updateMany,deleteAssetAttachment:k.deleteOne,deleteAssetAttachments:k.deleteMany}}),{initializeAssetAttachments:Xt,addAssetAttachment:Jm,addAssetAttachments:Qt,setAssetAttachment:jc,setAssetAttachments:Zm,updateAssetAttachment:Xm,updateAssetAttachments:qc,deleteAssetAttachment:Vc,deleteAssetAttachments:xt}=Zt.actions,zc=t=>t.assetAttachmentReducer.instances,Uc=d.createSelector([zc],t=>Object.values(t)),Dc=t=>e=>e.assetAttachmentReducer.instances[t],Cc=f(d.createSelector([Uc,(t,e)=>e],(t,e)=>g(t.filter(({asset:s})=>e===s)))),kc=Zt.reducer,B=I(t=>t.uuid),Bc=B.getInitialState({}),es=d.createSlice({name:"assetProcedureAttachments",initialState:Bc,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Bc)),reducers:{initializeAssetProcedureAttachments:B.initialize,addAssetProcedureAttachment:B.addOne,addAssetProcedureAttachments:B.addMany,setAssetProcedureAttachment:B.setOne,setAssetProcedureAttachments:B.setMany,updateAssetProcedureAttachment:B.updateOne,updateAssetProcedureAttachments:B.updateMany,deleteAssetProcedureAttachment:B.deleteOne,deleteAssetProcedureAttachments:B.deleteMany}}),{initializeAssetProcedureAttachments:$c,addAssetProcedureAttachment:Qm,addAssetProcedureAttachments:Gc,setAssetProcedureAttachment:Lc,setAssetProcedureAttachments:xm,updateAssetProcedureAttachment:ep,updateAssetProcedureAttachments:Nc,deleteAssetProcedureAttachment:Hc,deleteAssetProcedureAttachments:Wc}=es.actions,Kc=t=>t.assetProcedureAttachmentReducer.instances,Yc=d.createSelector([Kc],t=>Object.values(t)),Jc=t=>e=>e.assetProcedureAttachmentReducer.instances[t],tp=f(d.createSelector([Yc,(t,e)=>e],(t,e)=>g(t.filter(({asset_procedure:s})=>e===s)))),Zc=es.reducer,$=I(t=>t.uuid),Xc=$.getInitialState({}),ts=d.createSlice({name:"assetProcedureFieldsAttachments",initialState:Xc,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Xc)),reducers:{initializeAssetProcedureFieldsAttachments:$.initialize,addAssetProcedureFieldsAttachment:$.addOne,addAssetProcedureFieldsAttachments:$.addMany,setAssetProcedureFieldsAttachment:$.setOne,setAssetProcedureFieldsAttachments:$.setMany,updateAssetProcedureFieldsAttachment:$.updateOne,updateAssetProcedureFieldsAttachments:$.updateMany,deleteAssetProcedureFieldsAttachment:$.deleteOne,deleteAssetProcedureFieldsAttachments:$.deleteMany}}),{initializeAssetProcedureFieldsAttachments:Qc,addAssetProcedureFieldsAttachment:sp,addAssetProcedureFieldsAttachments:xc,setAssetProcedureFieldsAttachment:ap,setAssetProcedureFieldsAttachments:ip,updateAssetProcedureFieldsAttachment:cp,updateAssetProcedureFieldsAttachments:en,deleteAssetProcedureFieldsAttachment:np,deleteAssetProcedureFieldsAttachments:tn}=ts.actions,sn=t=>t.assetProcedureFieldsAttachmentReducer.instances,an=d.createSelector([sn],t=>Object.values(t)),rp=f(d.createSelector([an,(t,e)=>e],(t,e)=>g(t.filter(s=>s.fields_revision===e)))),dp=t=>e=>e.assetProcedureFieldsAttachmentReducer.instances[t],cn=ts.reducer,G=I(t=>t.uuid),nn=G.getInitialState({}),ss=d.createSlice({name:"assetProcedureFields",initialState:nn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,nn)),reducers:{initializeAssetProcedureFields:G.initialize,addAssetProcedureFields:G.addOne,addAssetProcedureFieldsMany:G.addMany,setAssetProcedureFields:G.setOne,setAssetProcedureFieldsMany:G.setMany,updateAssetProcedureFields:G.updateOne,updateAssetProcedureFieldsMany:G.updateMany,deleteAssetProcedureFields:G.deleteOne,deleteAssetProcedureFieldsMany:G.deleteMany}}),{initializeAssetProcedureFields:rn,addAssetProcedureFields:dn,addAssetProcedureFieldsMany:up,setAssetProcedureFields:op,setAssetProcedureFieldsMany:lp,updateAssetProcedureFields:un,updateAssetProcedureFieldsMany:hp,deleteAssetProcedureFields:on,deleteAssetProcedureFieldsMany:mp}=ss.actions,ln=t=>t.assetProcedureFieldsReducer.instances,as=d.createSelector([ln],t=>Object.values(t)),pp=f(d.createSelector([as,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure===e)))),Ap=f(d.createSelector([as,(t,e)=>e],(t,e)=>t.filter(s=>s.asset_procedure===e).sort((s,i)=>s.submitted_at>i.submitted_at?-1:1)[0])),yp=t=>e=>e.assetProcedureFieldsReducer.instances[t],hn=ss.reducer,L=I(t=>t.uuid),mn=L.getInitialState({}),is=d.createSlice({name:"assetProcedureFieldValuesAttachments",initialState:mn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,mn)),reducers:{initializeAssetProcedureFieldValuesAttachments:L.initialize,addAssetProcedureFieldValuesAttachment:L.addOne,addAssetProcedureFieldValuesAttachments:L.addMany,setAssetProcedureFieldValuesAttachment:L.setOne,setAssetProcedureFieldValuesAttachments:L.setMany,updateAssetProcedureFieldValuesAttachment:L.updateOne,updateAssetProcedureFieldValuesAttachments:L.updateMany,deleteAssetProcedureFieldValuesAttachment:L.deleteOne,deleteAssetProcedureFieldValuesAttachments:L.deleteMany}}),{initializeAssetProcedureFieldValuesAttachments:pn,addAssetProcedureFieldValuesAttachment:fp,addAssetProcedureFieldValuesAttachments:ht,setAssetProcedureFieldValuesAttachment:Sp,setAssetProcedureFieldValuesAttachments:gp,updateAssetProcedureFieldValuesAttachment:bp,updateAssetProcedureFieldValuesAttachments:An,deleteAssetProcedureFieldValuesAttachment:Pp,deleteAssetProcedureFieldValuesAttachments:mt}=is.actions,cs=t=>t.assetProcedureFieldValuesAttachmentReducer.instances,yn=d.createSelector([cs],t=>Object.values(t)),Fp=t=>e=>e.assetProcedureFieldValuesAttachmentReducer.instances[t],fn=f(d.createSelector([cs,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),Sn=f(d.createSelector([yn,(t,e)=>e],(t,e)=>g(t.filter(s=>s.field_values===e)))),gn=is.reducer,N=I(t=>t.uuid),bn=N.getInitialState({}),ns=d.createSlice({name:"assetProcedureFieldValues",initialState:bn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,bn)),reducers:{initializeAssetProcedureFieldValues:N.initialize,addAssetProcedureFieldValues:N.addOne,addAssetProcedureFieldValuesMany:N.addMany,setAssetProcedureFieldValues:N.setOne,setAssetProcedureFieldValuesMany:N.setMany,updateAssetProcedureFieldValues:N.updateOne,updateAssetProcedureFieldValuesMany:N.updateMany,deleteAssetProcedureFieldValues:N.deleteOne,deleteAssetProcedureFieldValuesMany:N.deleteMany}}),{initializeAssetProcedureFieldValues:Pn,addAssetProcedureFieldValues:rs,addAssetProcedureFieldValuesMany:Fn,setAssetProcedureFieldValues:Tp,setAssetProcedureFieldValuesMany:Ip,updateAssetProcedureFieldValues:Je,updateAssetProcedureFieldValuesMany:Tn,deleteAssetProcedureFieldValues:ds,deleteAssetProcedureFieldValuesMany:In}=ns.actions,On=t=>t.assetProcedureFieldValuesReducer.instances,us=d.createSelector([On],t=>Object.values(t)),Op=f(d.createSelector([us,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset===e)))),_p=f(d.createSelector([us,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure_instance===e)))),os=t=>e=>e.assetProcedureFieldValuesReducer.instances[t],_n=ns.reducer,H=I(t=>t.uuid),Rn=H.getInitialState({}),ls=d.createSlice({name:"assetProcedureInstances",initialState:Rn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Rn)),reducers:{initializeAssetProcedureInstances:H.initialize,addAssetProcedureInstance:H.addOne,addAssetProcedureInstances:H.addMany,setAssetProcedureInstance:H.setOne,setAssetProcedureInstances:H.setMany,updateAssetProcedureInstance:H.updateOne,updateAssetProcedureInstances:H.updateMany,deleteAssetProcedureInstance:H.deleteOne,deleteAssetProcedureInstances:H.deleteMany}}),{initializeAssetProcedureInstances:vn,addAssetProcedureInstance:hs,addAssetProcedureInstances:wn,updateAssetProcedureInstance:Ze,updateAssetProcedureInstances:Rp,deleteAssetProcedureInstance:ms,deleteAssetProcedureInstances:Mn,setAssetProcedureInstance:vp,setAssetProcedureInstances:wp}=ls.actions,ps=t=>t.assetProcedureInstanceReducer.instances,As=d.createSelector([ps],t=>Object.values(t)),En=f(d.createSelector([As,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure===e)))),Mp=f(d.createSelector([As,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_type===e)))),ys=t=>e=>e.assetProcedureInstanceReducer.instances[t],Ep=f(d.createSelector([ps,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c&&s.push(c)}return g(s)})),jn=ls.reducer,W=I(t=>t.uuid),qn=W.getInitialState({}),fs=d.createSlice({name:"assetProcedures",initialState:qn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,qn)),reducers:{initializeAssetProcedures:W.initialize,addAssetProcedure:W.addOne,addAssetProcedures:W.addMany,setAssetProcedure:W.setOne,setAssetProcedures:W.setMany,updateAssetProcedure:W.updateOne,updateAssetProcedures:W.updateMany,deleteAssetProcedure:W.deleteOne,deleteAssetProcedures:W.deleteMany}}),{initializeAssetProcedures:Vn,addAssetProcedure:Ss,addAssetProcedures:jp,updateAssetProcedure:Xe,updateAssetProcedures:qp,deleteAssetProcedure:gs,deleteAssetProcedures:Vp,setAssetProcedure:zp,setAssetProcedures:Up}=fs.actions,bs=t=>t.assetProcedureReducer.instances,zn=d.createSelector([bs],t=>Object.values(t)),Ps=t=>e=>e.assetProcedureReducer.instances[t],Dp=f(d.createSelector([bs,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c&&s.push(c)}return g(s)})),Cp=f(d.createSelector([zn,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Un=fs.reducer,K=I(t=>t.uuid),Dn=K.getInitialState({}),Fs=d.createSlice({name:"assetProcedureStepFieldsAttachments",initialState:Dn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Dn)),reducers:{initializeAssetProcedureStepFieldsAttachments:K.initialize,addAssetProcedureStepFieldsAttachment:K.addOne,addAssetProcedureStepFieldsAttachments:K.addMany,setAssetProcedureStepFieldsAttachment:K.setOne,setAssetProcedureStepFieldsAttachments:K.setMany,updateAssetProcedureStepFieldsAttachment:K.updateOne,updateAssetProcedureStepFieldsAttachments:K.updateMany,deleteAssetProcedureStepFieldsAttachment:K.deleteOne,deleteAssetProcedureStepFieldsAttachments:K.deleteMany}}),{initializeAssetProcedureStepFieldsAttachments:Cn,addAssetProcedureStepFieldsAttachment:kp,addAssetProcedureStepFieldsAttachments:kn,setAssetProcedureStepFieldsAttachment:Bp,setAssetProcedureStepFieldsAttachments:$p,updateAssetProcedureStepFieldsAttachment:Gp,updateAssetProcedureStepFieldsAttachments:Bn,deleteAssetProcedureStepFieldsAttachment:Lp,deleteAssetProcedureStepFieldsAttachments:$n}=Fs.actions,Gn=t=>t.assetProcedureStepFieldsAttachmentReducer.instances,Ln=d.createSelector([Gn],t=>Object.values(t)),Np=f(d.createSelector([Ln,(t,e)=>e],(t,e)=>g(t.filter(s=>s.fields_revision===e)))),Hp=t=>e=>e.assetProcedureStepFieldsAttachmentReducer.instances[t],Nn=Fs.reducer,Y=I(t=>t.uuid),Hn=Y.getInitialState({}),Ts=d.createSlice({name:"assetProcedureStepFields",initialState:Hn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Hn)),reducers:{initializeAssetProcedureStepFields:Y.initialize,addAssetProcedureStepFields:Y.addOne,addAssetProcedureStepFieldsMany:Y.addMany,setAssetProcedureStepFields:Y.setOne,setAssetProcedureStepFieldsMany:Y.setMany,updateAssetProcedureStepFields:Y.updateOne,updateAssetProcedureStepFieldsMany:Y.updateMany,deleteAssetProcedureStepFields:Y.deleteOne,deleteAssetProcedureStepFieldsMany:Y.deleteMany}}),{initializeAssetProcedureStepFields:Wn,addAssetProcedureStepFields:Is,addAssetProcedureStepFieldsMany:Wp,setAssetProcedureStepFields:Kp,setAssetProcedureStepFieldsMany:Yp,updateAssetProcedureStepFields:Qe,updateAssetProcedureStepFieldsMany:Jp,deleteAssetProcedureStepFields:Os,deleteAssetProcedureStepFieldsMany:Zp}=Ts.actions,_s=t=>t.assetProcedureStepFieldsReducer.instances,Rs=d.createSelector([_s],t=>Object.values(t)),Xp=f(d.createSelector([Rs,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure_step===e)))),Qp=f(d.createSelector([Rs,(t,e)=>e],(t,e)=>t.filter(s=>s.asset_procedure_step===e).sort((s,i)=>s.submitted_at>i.submitted_at?-1:1)[0])),xp=d.createSelector([_s],t=>{const e={};for(const s of Object.values(t)){const i=e[s.asset_procedure_step];(!i||i.submitted_at<s.submitted_at)&&(e[s.asset_procedure_step]=s)}return e}),eA=t=>e=>e.assetProcedureStepFieldsReducer.instances[t],Kn=Ts.reducer,J=I(t=>t.uuid),Yn=J.getInitialState({}),vs=d.createSlice({name:"assetProcedureStepFieldValuesAttachments",initialState:Yn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Yn)),reducers:{initializeAssetProcedureStepFieldValuesAttachments:J.initialize,addAssetProcedureStepFieldValuesAttachment:J.addOne,addAssetProcedureStepFieldValuesAttachments:J.addMany,setAssetProcedureStepFieldValuesAttachment:J.setOne,setAssetProcedureStepFieldValuesAttachments:J.setMany,updateAssetProcedureStepFieldValuesAttachment:J.updateOne,updateAssetProcedureStepFieldValuesAttachments:J.updateMany,deleteAssetProcedureStepFieldValuesAttachment:J.deleteOne,deleteAssetProcedureStepFieldValuesAttachments:J.deleteMany}}),{initializeAssetProcedureStepFieldValuesAttachments:Jn,addAssetProcedureStepFieldValuesAttachment:tA,addAssetProcedureStepFieldValuesAttachments:pt,setAssetProcedureStepFieldValuesAttachment:sA,setAssetProcedureStepFieldValuesAttachments:aA,updateAssetProcedureStepFieldValuesAttachment:iA,updateAssetProcedureStepFieldValuesAttachments:Zn,deleteAssetProcedureStepFieldValuesAttachment:cA,deleteAssetProcedureStepFieldValuesAttachments:At}=vs.actions,ws=t=>t.assetProcedureStepFieldValuesAttachmentReducer.instances,Xn=d.createSelector([ws],t=>Object.values(t)),nA=t=>e=>e.assetProcedureStepFieldValuesAttachmentReducer.instances[t],Qn=f(d.createSelector([ws,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),xn=f(d.createSelector([Xn,(t,e)=>e],(t,e)=>g(t.filter(s=>s.field_values===e)))),er=vs.reducer,Z=I(t=>t.uuid),tr=Z.getInitialState({}),Ms=d.createSlice({name:"assetProcedureStepFieldValues",initialState:tr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,tr)),reducers:{initializeAssetProcedureStepFieldValues:Z.initialize,addAssetProcedureStepFieldValues:Z.addOne,addAssetProcedureStepFieldValuesMany:Z.addMany,setAssetProcedureStepFieldValues:Z.setOne,setAssetProcedureStepFieldValuesMany:Z.setMany,updateAssetProcedureStepFieldValues:Z.updateOne,updateAssetProcedureStepFieldValuesMany:Z.updateMany,deleteAssetProcedureStepFieldValues:Z.deleteOne,deleteAssetProcedureStepFieldValuesMany:Z.deleteMany}}),{initializeAssetProcedureStepFieldValues:sr,addAssetProcedureStepFieldValues:Es,addAssetProcedureStepFieldValuesMany:ar,setAssetProcedureStepFieldValues:rA,setAssetProcedureStepFieldValuesMany:dA,updateAssetProcedureStepFieldValues:xe,updateAssetProcedureStepFieldValuesMany:ir,deleteAssetProcedureStepFieldValues:js,deleteAssetProcedureStepFieldValuesMany:cr}=Ms.actions,nr=t=>t.assetProcedureStepFieldValuesReducer.instances,yt=d.createSelector([nr],t=>Object.values(t)),uA=f(d.createSelector([yt,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset===e)))),oA=f(d.createSelector([yt,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure_instance===e)))),lA=f(d.createSelector([yt,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure_step===e)))),qs=t=>e=>e.assetProcedureStepFieldValuesReducer.instances[t],rr=Ms.reducer,X=I(t=>t.uuid),dr=X.getInitialState({}),Vs=d.createSlice({name:"assetProcedureSteps",initialState:dr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,dr)),reducers:{initializeAssetProcedureSteps:X.initialize,setAssetProcedureStep:X.setOne,setAssetProcedureSteps:X.setMany,addAssetProcedureStep:X.addOne,addAssetProcedureSteps:X.addMany,updateAssetProcedureStep:X.updateOne,updateAssetProcedureSteps:X.updateMany,deleteAssetProcedureStep:X.deleteOne,deleteAssetProcedureSteps:X.deleteMany}}),{initializeAssetProcedureSteps:ur,setAssetProcedureStep:or,setAssetProcedureSteps:hA,addAssetProcedureStep:zs,addAssetProcedureSteps:mA,updateAssetProcedureStep:ft,updateAssetProcedureSteps:pA,deleteAssetProcedureStep:Us,deleteAssetProcedureSteps:AA}=Vs.actions,lr=Vs.reducer,St=t=>t.assetProcedureStepReducer.instances,Ds=t=>e=>e.assetProcedureStepReducer.instances[t],hr=d.createSelector([St],t=>Object.values(t)),yA=f(d.createSelector([St,(t,e)=>e],(t,e)=>{const s={};for(const[i,c]of Object.entries(t))c.asset_procedure===e&&(s[i]=c);return lt(s)})),fA=f(d.createSelector([hr,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure===e)))),SA=f(d.createSelector([St,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectAssetProcedureStepsByIds: No step exists with the id",i)}return g(s)})),Q=I(t=>t.uuid),mr=Q.getInitialState({}),Cs=d.createSlice({name:"assets",initialState:mr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,mr)),reducers:{initializeAssets:Q.initialize,addAsset:Q.addOne,addAssets:Q.addMany,setAsset:Q.setOne,setAssets:Q.setMany,updateAsset:Q.updateOne,updateAssets:Q.updateMany,deleteAsset:Q.deleteOne,deleteAssets:Q.deleteMany}}),{initializeAssets:pr,addAsset:ks,addAssets:gt,updateAsset:et,updateAssets:gA,deleteAsset:Bs,deleteAssets:$s,setAsset:bA,setAssets:PA}=Cs.actions,Gs=t=>t.assetReducer.instances,Ar=d.createSelector([Gs],t=>g(Object.values(t))),Ls=f(d.createSelector([Ar,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_type===e)))),Ns=t=>e=>e.assetReducer.instances[t],yr=f(d.createSelector([Gs,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c&&s.push(c)}return g(s)})),FA=t=>e=>Ls(t)(e).length,fr=Cs.reducer,x=I(t=>t.uuid),Sr=x.getInitialState({}),Hs=d.createSlice({name:"assetStageCompletions",initialState:Sr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Sr)),reducers:{initializeAssetStageCompletions:x.initialize,addAssetStageCompletion:x.addOne,addAssetStageCompletions:x.addMany,setAssetStageCompletion:x.setOne,setAssetStageCompletions:x.setMany,updateAssetStageCompletion:x.updateOne,updateAssetStageCompletions:x.updateMany,deleteAssetStageCompletion:x.deleteOne,deleteAssetStageCompletions:x.deleteMany}}),{initializeAssetStageCompletions:gr,addAssetStageCompletion:Ws,addAssetStageCompletions:Ks,setAssetStageCompletion:TA,setAssetStageCompletions:IA,updateAssetStageCompletion:br,updateAssetStageCompletions:Pr,deleteAssetStageCompletion:Ys,deleteAssetStageCompletions:Js}=Hs.actions,Fr=Hs.reducer,Zs=t=>t.assetStageCompletionReducer.instances,OA=d.createSelector([Zs],t=>Object.values(t)),Tr=t=>e=>e.assetStageCompletionReducer.instances[t],Ir=f(d.createSelector([Zs,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),ee=I(t=>t.uuid),Or=ee.getInitialState({}),Xs=d.createSlice({name:"assetStages",initialState:Or,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Or)),reducers:{initializeAssetStages:ee.initialize,setAssetStage:ee.setOne,setAssetStages:ee.setMany,addAssetStage:ee.addOne,addAssetStages:ee.addMany,updateAssetStage:ee.updateOne,updateAssetStages:ee.updateMany,deleteAssetStage:ee.deleteOne,deleteAssetStages:ee.deleteMany}}),{initializeAssetStages:_r,setAssetStage:Rr,setAssetStages:_A,addAssetStage:Qs,addAssetStages:RA,updateAssetStage:bt,updateAssetStages:vA,deleteAssetStage:xs,deleteAssetStages:wA}=Xs.actions,vr=Xs.reducer,Pt=t=>t.assetStageReducer.instances,ea=t=>e=>e.assetStageReducer.instances[t],wr=d.createSelector([Pt],t=>Object.values(t)),MA=f(d.createSelector([Pt,(t,e)=>e],(t,e)=>{const s={};for(const[i,c]of Object.entries(t))c.asset_procedure===e&&(s[i]=c);return lt(s)})),EA=f(d.createSelector([wr,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure===e)))),jA=f(d.createSelector([Pt,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectStagesFromStageIds: No stage exists with the id",i)}return g(s)})),te=I(t=>t.uuid),Mr=te.getInitialState({}),ta=d.createSlice({name:"assetTypeAttachments",initialState:Mr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Mr)),reducers:{initializeAssetTypeAttachments:te.initialize,addAssetTypeAttachment:te.addOne,addAssetTypeAttachments:te.addMany,setAssetTypeAttachment:te.setOne,setAssetTypeAttachments:te.setMany,updateAssetTypeAttachment:te.updateOne,updateAssetTypeAttachments:te.updateMany,deleteAssetTypeAttachment:te.deleteOne,deleteAssetTypeAttachments:te.deleteMany}}),{initializeAssetTypeAttachments:Er,addAssetTypeAttachment:qA,addAssetTypeAttachments:sa,setAssetTypeAttachment:jr,setAssetTypeAttachments:VA,updateAssetTypeAttachment:zA,updateAssetTypeAttachments:qr,deleteAssetTypeAttachment:Vr,deleteAssetTypeAttachments:aa}=ta.actions,zr=t=>t.assetTypeAttachmentReducer.instances,Ur=d.createSelector([zr],t=>Object.values(t)),Dr=t=>e=>e.assetTypeAttachmentReducer.instances[t],Cr=f(d.createSelector([Ur,(t,e)=>e],(t,e)=>g(t.filter(({asset_type:s})=>e===s)))),kr=ta.reducer,se=I(t=>t.uuid),Br=se.getInitialState({}),ia=d.createSlice({name:"assetTypeFieldsAttachments",initialState:Br,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Br)),reducers:{initializeAssetTypeFieldsAttachments:se.initialize,addAssetTypeFieldsAttachment:se.addOne,addAssetTypeFieldsAttachments:se.addMany,setAssetTypeFieldsAttachment:se.setOne,setAssetTypeFieldsAttachments:se.setMany,updateAssetTypeFieldsAttachment:se.updateOne,updateAssetTypeFieldsAttachments:se.updateMany,deleteAssetTypeFieldsAttachment:se.deleteOne,deleteAssetTypeFieldsAttachments:se.deleteMany}}),{initializeAssetTypeFieldsAttachments:$r,addAssetTypeFieldsAttachment:UA,addAssetTypeFieldsAttachments:Gr,setAssetTypeFieldsAttachment:DA,setAssetTypeFieldsAttachments:CA,updateAssetTypeFieldsAttachment:kA,updateAssetTypeFieldsAttachments:Lr,deleteAssetTypeFieldsAttachment:BA,deleteAssetTypeFieldsAttachments:Nr}=ia.actions,Hr=t=>t.assetTypeFieldsAttachmentReducer.instances,Wr=d.createSelector([Hr],t=>Object.values(t)),$A=f(d.createSelector([Wr,(t,e)=>e],(t,e)=>g(t.filter(s=>s.fields_revision===e)))),GA=t=>e=>e.assetTypeFieldsAttachmentReducer.instances[t],Kr=ia.reducer,ae=I(t=>t.uuid),Yr=ae.getInitialState({}),ca=d.createSlice({name:"assetTypeFields",initialState:Yr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Yr)),reducers:{initializeAssetTypeFields:ae.initialize,addAssetTypeFields:ae.addOne,addAssetTypeFieldsMany:ae.addMany,setAssetTypeFields:ae.setOne,setAssetTypeFieldsMany:ae.setMany,updateAssetTypeFields:ae.updateOne,updateAssetTypeFieldsMany:ae.updateMany,deleteAssetTypeFields:ae.deleteOne,deleteAssetTypeFieldsMany:ae.deleteMany}}),{initializeAssetTypeFields:Jr,addAssetTypeFields:Zr,addAssetTypeFieldsMany:LA,setAssetTypeFields:NA,setAssetTypeFieldsMany:HA,updateAssetTypeFields:Xr,updateAssetTypeFieldsMany:WA,deleteAssetTypeFields:Qr,deleteAssetTypeFieldsMany:KA}=ca.actions,xr=t=>t.assetTypeFieldsReducer.instances,Ft=d.createSelector([xr],t=>Object.values(t)),YA=f(d.createSelector([Ft,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_type===e)))),JA=f(d.createSelector([Ft,(t,e)=>e],(t,e)=>t.filter(s=>s.asset_type===e).sort((s,i)=>s.submitted_at>i.submitted_at?-1:1)[0])),ZA=t=>e=>e.assetTypeFieldsReducer.instances[t],ed=ca.reducer,ie=I(t=>t.uuid),td=ie.getInitialState({}),na=d.createSlice({name:"assetTypeFieldValuesAttachments",initialState:td,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,td)),reducers:{initializeAssetTypeFieldValuesAttachments:ie.initialize,addAssetTypeFieldValuesAttachment:ie.addOne,addAssetTypeFieldValuesAttachments:ie.addMany,setAssetTypeFieldValuesAttachment:ie.setOne,setAssetTypeFieldValuesAttachments:ie.setMany,updateAssetTypeFieldValuesAttachment:ie.updateOne,updateAssetTypeFieldValuesAttachments:ie.updateMany,deleteAssetTypeFieldValuesAttachment:ie.deleteOne,deleteAssetTypeFieldValuesAttachments:ie.deleteMany}}),{initializeAssetTypeFieldValuesAttachments:sd,addAssetTypeFieldValuesAttachment:XA,addAssetTypeFieldValuesAttachments:Tt,setAssetTypeFieldValuesAttachment:QA,setAssetTypeFieldValuesAttachments:xA,updateAssetTypeFieldValuesAttachment:ey,updateAssetTypeFieldValuesAttachments:ad,deleteAssetTypeFieldValuesAttachment:ty,deleteAssetTypeFieldValuesAttachments:It}=na.actions,ra=t=>t.assetTypeFieldValuesAttachmentReducer.instances,id=d.createSelector([ra],t=>Object.values(t)),sy=t=>e=>e.assetTypeFieldValuesAttachmentReducer.instances[t],cd=f(d.createSelector([ra,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),nd=f(d.createSelector([id,(t,e)=>e],(t,e)=>g(t.filter(s=>s.field_values===e)))),rd=na.reducer,ce=I(t=>t.uuid),dd=ce.getInitialState({}),da=d.createSlice({name:"assetTypeFieldValues",initialState:dd,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,dd)),reducers:{initializeAssetTypeFieldValues:ce.initialize,addAssetTypeFieldValues:ce.addOne,addAssetTypeFieldValuesMany:ce.addMany,setAssetTypeFieldValues:ce.setOne,setAssetTypeFieldValuesMany:ce.setMany,updateAssetTypeFieldValues:ce.updateOne,updateAssetTypeFieldValuesMany:ce.updateMany,deleteAssetTypeFieldValues:ce.deleteOne,deleteAssetTypeFieldValuesMany:ce.deleteMany}}),{initializeAssetTypeFieldValues:ud,addAssetTypeFieldValues:ua,addAssetTypeFieldValuesMany:od,setAssetTypeFieldValues:ay,setAssetTypeFieldValuesMany:iy,updateAssetTypeFieldValues:tt,updateAssetTypeFieldValuesMany:ld,deleteAssetTypeFieldValues:oa,deleteAssetTypeFieldValuesMany:hd}=da.actions,md=t=>t.assetTypeFieldValuesReducer.instances,la=d.createSelector([md],t=>Object.values(t)),cy=f(d.createSelector([la,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset===e)))),ny=f(d.createSelector([Ft,la,(t,e)=>e],(t,e,s)=>{const i=new Set(t.filter(c=>c.asset_type===s).map(c=>c.uuid));return g(e.filter(c=>i.has(c.fields_revision)))})),ha=t=>e=>e.assetTypeFieldValuesReducer.instances[t],pd=da.reducer,ne=I(t=>t.uuid),Ad=ne.getInitialState({}),ma=d.createSlice({name:"assetTypes",initialState:Ad,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Ad)),reducers:{initializeAssetTypes:ne.initialize,setAssetType:ne.setOne,setAssetTypes:ne.setMany,addAssetType:ne.addOne,addAssetTypes:ne.addMany,updateAssetType:ne.updateOne,updateAssetTypes:ne.updateMany,deleteAssetType:ne.deleteOne,deleteAssetTypes:ne.deleteMany}}),{initializeAssetTypes:yd,setAssetType:ry,setAssetTypes:dy,addAssetType:pa,addAssetTypes:uy,updateAssetType:st,updateAssetTypes:oy,deleteAssetType:Aa,deleteAssetTypes:ly}=ma.actions,ya=t=>t.assetTypeReducer.instances,fd=d.createSelector([ya],t=>Object.values(t)),fa=t=>e=>e.assetTypeReducer.instances[t],hy=f(d.createSelector([ya,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectAssetTypesByIds: No assetType exists with the id",i)}return g(s)})),my=f(d.createSelector([fd,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Sd=ma.reducer,gd={accessToken:"",refreshToken:"",isLoggedIn:!1},Ot=d.createSlice({name:"auth",initialState:gd,extraReducers:t=>t.addCase(F,e=>Object.assign(e,gd)),reducers:{setTokens:(t,e)=>{t.accessToken=e.payload.accessToken,t.refreshToken=e.payload.refreshToken},clearTokens:t=>{t.accessToken="",t.refreshToken=""},setLoggedIn:(t,e)=>{e.payload||Ot.caseReducers.clearTokens(t),t.isLoggedIn=e.payload}}}),{setTokens:py,clearTokens:Ay,setLoggedIn:bd}=Ot.actions,yy=t=>t.authReducer.accessToken,fy=t=>t.authReducer.isLoggedIn,Pd=Ot.reducer,re=I(t=>t.uuid),Fd=re.getInitialState({}),Sa=d.createSlice({name:"categories",initialState:Fd,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Fd)),reducers:{initializeCategories:re.initialize,addCategory:re.addOne,addCategories:re.addMany,setCategory:re.setOne,setCategories:re.setMany,updateCategory:re.updateOne,updateCategories:re.updateMany,deleteCategory:re.deleteOne,deleteCategories:re.deleteMany}}),{initializeCategories:Td,addCategory:ga,addCategories:Sy,setCategory:gy,setCategories:by,updateCategory:Id,updateCategories:Py,deleteCategory:Od,deleteCategories:Fy}=Sa.actions,ba=t=>t.categoryReducer.instances,_d=d.createSelector([ba],t=>Object.values(t)),Pa=t=>e=>e.categoryReducer.instances[t],Ty=f(d.createSelector([ba,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectCategoryByIds: No category exists with the id",i)}return g(s)})),Iy=f(d.createSelector([_d,(t,e)=>e],(t,e)=>g(t.filter(s=>s.project===e)))),Rd=Sa.reducer,de=I(t=>t.uuid),vd=de.getInitialState({}),Fa=d.createSlice({name:"documentAttachments",initialState:vd,extraReducers:t=>t.addCase(F,e=>Object.assign(e,vd)),reducers:{initializeDocumentAttachments:de.initialize,addDocumentAttachment:de.addOne,addDocumentAttachments:de.addMany,setDocumentAttachment:de.setOne,setDocumentAttachments:de.setMany,updateDocumentAttachment:de.updateOne,updateDocumentAttachments:de.updateMany,deleteDocumentAttachment:de.deleteOne,deleteDocumentAttachments:de.deleteMany}}),{initializeDocumentAttachments:wd,addDocumentAttachment:Oy,addDocumentAttachments:Md,setDocumentAttachment:Ed,setDocumentAttachments:_y,updateDocumentAttachment:Ry,updateDocumentAttachments:jd,deleteDocumentAttachment:qd,deleteDocumentAttachments:Vd}=Fa.actions,zd=t=>t.documentAttachmentReducer.instances,Ud=d.createSelector([zd],t=>Object.values(t)),Dd=t=>e=>e.documentAttachmentReducer.instances[t],vy=f(d.createSelector([Ud,(t,e)=>e],(t,e)=>g(t.filter(({document:s})=>e===s)))),Cd=Fa.reducer,kd={documents:{}},Ta=d.createSlice({name:"documents",initialState:kd,extraReducers:t=>t.addCase(F,e=>{Object.assign(e,kd)}),reducers:{setDocuments:(t,e)=>{if(e.payload.filter(Ic).length!==e.payload.length)throw new Error("Tried to use setIssues reducer with duplicate ID's");t.documents=Tc(e.payload)},addDocuments:(t,e)=>{for(const s of e.payload)if(s.uuid in t.documents)throw new Error(`attempting to add a document with uuid ${s.uuid} which already exists in state.documents.`);for(const s of e.payload){if(s.parent_document&&t.documents[s.parent_document]){const i=t.documents[s.parent_document];t.documents[s.parent_document]={...i,children_documents:[...i.children_documents,s.uuid]}}t.documents[s.uuid]=s}},updateDocuments:(t,e)=>{for(const s of e.payload)if(!(s.uuid in t.documents))throw new Error(`attempting to update a document with uuid ${s.uuid} which doesn't exists in state.documents.`);for(const s of e.payload){const i=t.documents[s.uuid];if(s.organization!==void 0&&s.organization!==i.organization)throw new Error("organization cannot be updated");if(s.project!==void 0&&s.project!==i.project)throw new Error("project cannot be updated");t.documents[s.uuid]={...i,...s}}},removeDocuments:(t,e)=>{for(const s of e.payload)if(!(s in t.documents))throw new Error(`attempting to delete a document with uuid ${s} which doesn't exists in state.documents.`);for(const s of e.payload){const i=t.documents[s];if(i.parent_document&&t.documents[i.parent_document]){const c=t.documents[i.parent_document];t.documents[i.parent_document]={...c,children_documents:c.children_documents.filter(n=>n!==i.uuid)}}delete t.documents[s]}}}}),{setDocuments:Bd,addDocuments:$d,updateDocuments:Ne,removeDocuments:Ia}=Ta.actions,_t=t=>t.documentsReducer.documents,Oa=d.createSelector([_t],t=>Object.values(t)),Gd=t=>e=>e.documentsReducer.documents[t],wy=f(d.createSelector([_t,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectDocumentByIds: No document exists with the id",i)}return g(s)})),My=f(d.createSelector([Oa,(t,e)=>e],(t,e)=>t.filter(s=>s.project===e))),Ey=f(d.createSelector([Oa,(t,e)=>e],(t,e)=>t.filter(s=>s.organization===e))),Ld=Ta.reducer,ue=I(t=>t.uuid),Nd=ue.getInitialState({}),_a=d.createSlice({name:"emailDomains",initialState:Nd,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Nd)),reducers:{initializeEmailDomains:ue.initialize,addEmailDomain:ue.addOne,addEmailDomains:ue.addMany,setEmailDomain:ue.setOne,setEmailDomains:ue.setMany,updateEmailDomain:ue.updateOne,updateEmailDomains:ue.updateMany,deleteEmailDomain:ue.deleteOne,deleteEmailDomains:ue.deleteMany}}),{initializeEmailDomains:Hd,addEmailDomain:Wd,addEmailDomains:jy,setEmailDomain:qy,setEmailDomains:Vy,updateEmailDomain:zy,updateEmailDomains:Uy,deleteEmailDomain:Kd,deleteEmailDomains:Dy}=_a.actions,Yd=t=>t.emailDomainsReducer.instances,Jd=d.createSelector([Yd],t=>Object.values(t)),Cy=f(d.createSelector([Jd,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Zd=_a.reducer,Xd={s3Urls:{}},Qd=1e3*60*60,ky=Qd*24*7,Ra=d.createSlice({name:"file",initialState:Xd,extraReducers:t=>t.addCase(F,e=>Object.assign(e,Xd)),reducers:{setUploadUrl:(t,e)=>{const{url:s,fields:i,sha1:c}=e.payload,n=new Date,r=new Date(n.getTime()+ky);t.s3Urls[c]={url:s,fields:i,exp:r.getTime()}}}}),{setUploadUrl:xd}=Ra.actions,eu=t=>e=>{const s=e.fileReducer.s3Urls[t];if(!s)return;const i=new Date().getTime();if(!((s.exp??i)-i<Qd))return s},tu=Ra.reducer,oe=I(t=>t.uuid),su=oe.getInitialState({}),va=d.createSlice({name:"formRevisionAttachments",initialState:su,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,su)),reducers:{initializeFormRevisionAttachments:oe.initialize,addFormRevisionAttachment:oe.addOne,addFormRevisionAttachments:oe.addMany,setFormRevisionAttachment:oe.setOne,setFormRevisionAttachments:oe.setMany,updateFormRevisionAttachment:oe.updateOne,updateFormRevisionAttachments:oe.updateMany,deleteFormRevisionAttachment:oe.deleteOne,deleteFormRevisionAttachments:oe.deleteMany}}),{initializeFormRevisionAttachments:au,addFormRevisionAttachment:By,addFormRevisionAttachments:iu,setFormRevisionAttachment:$y,setFormRevisionAttachments:Gy,updateFormRevisionAttachment:Ly,updateFormRevisionAttachments:cu,deleteFormRevisionAttachment:Ny,deleteFormRevisionAttachments:nu}=va.actions,ru=t=>t.formRevisionAttachmentReducer.instances,Hy=f(d.createSelector([ru,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.form_revision===e)))),du=va.reducer,Wy=(t,e)=>{const s=t.revision,i=e.revision;return s===void 0&&i===void 0?t.submitted_at<e.submitted_at?-1:1:s===void 0?1:i===void 0||s<i?-1:1},le=I(t=>t.uuid),uu=le.getInitialState({}),wa=d.createSlice({name:"formRevisions",initialState:uu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,uu)),reducers:{initializeFormRevisions:le.initialize,addFormRevision:le.addOne,addFormRevisions:le.addMany,setFormRevision:le.setOne,setFormRevisions:le.setMany,updateFormRevision:le.updateOne,updateFormRevisions:le.updateMany,deleteFormRevision:le.deleteOne,deleteFormRevisions:le.deleteMany}}),{initializeFormRevisions:ou,addFormRevision:Ma,addFormRevisions:lu,setFormRevision:hu,setFormRevisions:Ky,updateFormRevision:Yy,updateFormRevisions:Jy,deleteFormRevision:Ea,deleteFormRevisions:mu}=wa.actions,Rt=t=>t.formRevisionReducer.instances,pu=d.createSelector([Rt],t=>Object.values(t)),Zy=t=>e=>e.formRevisionReducer.instances[t],Xy=f(d.createSelector([Rt,(t,e)=>e],(t,e)=>{const s=Object.values(t).filter(n=>n.form===e);if(s.length===0)return;const c=s.sort(Wy)[s.length-1];return t[c.uuid]})),Au=f(d.createSelector([pu,(t,e)=>e],(t,e)=>g(t.filter(s=>s.form===e)))),yu=wa.reducer,he=I(t=>t.uuid),fu=he.getInitialState({}),ja=d.createSlice({name:"forms",initialState:fu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,fu)),reducers:{initializeForms:he.initialize,addForm:he.addOne,addForms:he.addMany,setForm:he.setOne,setForms:he.setMany,updateForm:he.updateOne,updateForms:he.updateMany,deleteForm:he.deleteOne,deleteForms:he.deleteMany}}),{initializeForms:Su,addForm:qa,addForms:Qy,setForm:xy,setForms:ef,updateForm:tf,updateForms:sf,deleteForm:Va,deleteForms:af}=ja.actions,gu=ja.reducer,bu=t=>t.formReducer.instances,Pu=d.createSelector([bu],t=>Object.values(t)),Fu=t=>e=>e.formReducer.instances[t],cf=f(d.createSelector([Pu,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),me=I(t=>t.uuid),Tu=me.getInitialState({}),za=d.createSlice({name:"formSubmissionAttachments",initialState:Tu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Tu)),reducers:{initializeFormSubmissionAttachments:me.initialize,addFormSubmissionAttachment:me.addOne,addFormSubmissionAttachments:me.addMany,setFormSubmissionAttachment:me.setOne,setFormSubmissionAttachments:me.setMany,updateFormSubmissionAttachment:me.updateOne,updateFormSubmissionAttachments:me.updateMany,deleteFormSubmissionAttachment:me.deleteOne,deleteFormSubmissionAttachments:me.deleteMany}}),{initializeFormSubmissionAttachments:Iu,addFormSubmissionAttachment:nf,addFormSubmissionAttachments:vt,setFormSubmissionAttachment:rf,setFormSubmissionAttachments:df,updateFormSubmissionAttachment:uf,updateFormSubmissionAttachments:Ou,deleteFormSubmissionAttachment:of,deleteFormSubmissionAttachments:wt}=za.actions,Ua=t=>t.formSubmissionAttachmentReducer.instances,_u=f(d.createSelector([Ua,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),Ru=f(d.createSelector([Ua,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.form_submission===e)))),vu=za.reducer,pe=I(t=>t.uuid),wu=pe.getInitialState({}),Da=d.createSlice({name:"formSubmissions",initialState:wu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,wu)),reducers:{initializeFormSubmissions:pe.initialize,setFormSubmission:pe.setOne,setFormSubmissions:pe.setMany,addFormSubmission:pe.addOne,addFormSubmissions:pe.addMany,updateFormSubmission:pe.updateOne,updateFormSubmissions:pe.updateMany,deleteFormSubmission:pe.deleteOne,deleteFormSubmissions:pe.deleteMany}}),{initializeFormSubmissions:Mu,setFormSubmission:Mt,setFormSubmissions:lf,addFormSubmission:Ca,addFormSubmissions:Et,updateFormSubmission:Eu,updateFormSubmissions:hf,deleteFormSubmission:ka,deleteFormSubmissions:jt}=Da.actions,Ba=t=>t.formSubmissionReducer.instances,$a=d.createSelector([Ba],t=>Object.values(t)),Ga=t=>e=>e.formSubmissionReducer.instances[t],ju=f(d.createSelector([Ba,Rt,(t,e)=>e],(t,e,s)=>{const i=new Set;for(const c of Object.values(e))c.form===s&&i.add(c.uuid);return Object.values(t).filter(c=>i.has(c.form_revision))})),qu=f(d.createSelector([$a,(t,e)=>e],(t,e)=>Object.values(t).filter(s=>s.issue===e))),Vu=f(d.createSelector([$a,(t,e)=>e],(t,e)=>t.filter(s=>s.asset===e))),zu=Da.reducer,Ae=I(t=>t.uuid),Uu=Ae.getInitialState({}),La=d.createSlice({name:"geoImages",initialState:Uu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Uu)),reducers:{initializeGeoImages:Ae.initialize,setGeoImage:Ae.setOne,setGeoImages:Ae.setMany,addGeoImage:Ae.addOne,addGeoImages:Ae.addMany,updateGeoImage:Ae.updateOne,updateGeoImages:Ae.updateMany,deleteGeoImage:Ae.deleteOne,deleteGeoImages:Ae.deleteMany}}),{initializeGeoImages:Du,setGeoImage:at,setGeoImages:Cu,addGeoImage:ku,addGeoImages:Bu,updateGeoImage:$u,updateGeoImages:mf,deleteGeoImage:Na,deleteGeoImages:Gu}=La.actions,Lu=t=>t.geoImageReducer.instances,Nu=d.createSelector([Lu],t=>Object.values(t)),Ha=t=>e=>e.geoImageReducer.instances[t],pf=f(d.createSelector([Nu,(t,e)=>e],(t,e)=>g(t.filter(s=>s.project===e)))),Hu=La.reducer,ye=I(t=>t.uuid),Wu=ye.getInitialState({}),Wa=d.createSlice({name:"issueAssociations",initialState:Wu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Wu)),reducers:{initializeIssueAssociations:ye.initialize,addIssueAssociation:ye.addOne,addIssueAssociations:ye.addMany,setIssueAssociation:ye.setOne,setIssueAssociations:ye.setMany,updateIssueAssociation:ye.updateOne,updateIssueAssociations:ye.updateMany,deleteIssueAssociation:ye.deleteOne,deleteIssueAssociations:ye.deleteMany}}),{initializeIssueAssociations:Ku,setIssueAssociations:Af,setIssueAssociation:yf,updateIssueAssociation:Yu,updateIssueAssociations:ff,addIssueAssociation:Ka,addIssueAssociations:Ya,deleteIssueAssociation:Ja,deleteIssueAssociations:Za}=Wa.actions,it=t=>t.issueAssociationReducer.instances,Sf=d.createSelector([it],t=>Object.values(t)),Ju=t=>e=>e.issueAssociationReducer.instances[t],Zu=f(d.createSelector([it,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.associated_issue===e)))),Xu=f(d.createSelector([it,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.issue===e)))),Qu=f(d.createSelector([it,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.asset===e)))),xu=Wa.reducer,fe=I(t=>t.uuid),eo=fe.getInitialState({}),Xa=d.createSlice({name:"issueAttachments",initialState:eo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,eo)),reducers:{initializeIssueAttachments:fe.initialize,addIssueAttachment:fe.addOne,addIssueAttachments:fe.addMany,setIssueAttachment:fe.setOne,setIssueAttachments:fe.setMany,updateIssueAttachment:fe.updateOne,updateIssueAttachments:fe.updateMany,deleteIssueAttachment:fe.deleteOne,deleteIssueAttachments:fe.deleteMany}}),{initializeIssueAttachments:Qa,addIssueAttachment:gf,addIssueAttachments:xa,setIssueAttachment:to,setIssueAttachments:bf,updateIssueAttachment:Pf,updateIssueAttachments:so,deleteIssueAttachment:ao,deleteIssueAttachments:ei}=Xa.actions,io=t=>t.issueAttachmentReducer.instances,co=d.createSelector([io],t=>Object.values(t)),no=f(d.createSelector([co,(t,e)=>e],(t,e)=>g(t.filter(({issue:s})=>e===s)))),ro=t=>e=>e.issueAttachmentReducer.instances[t],uo=Xa.reducer,Se=I(t=>t.uuid),oo=Se.getInitialState({}),ti=d.createSlice({name:"issueCommentAttachments",initialState:oo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,oo)),reducers:{initializeIssueCommentAttachments:Se.initialize,addIssueCommentAttachment:Se.addOne,addIssueCommentAttachments:Se.addMany,setIssueCommentAttachment:Se.setOne,setIssueCommentAttachments:Se.setMany,updateIssueCommentAttachment:Se.updateOne,updateIssueCommentAttachments:Se.updateMany,deleteIssueCommentAttachment:Se.deleteOne,deleteIssueCommentAttachments:Se.deleteMany}}),{initializeIssueCommentAttachments:si,addIssueCommentAttachment:Ff,addIssueCommentAttachments:lo,setIssueCommentAttachment:ho,setIssueCommentAttachments:Tf,updateIssueCommentAttachment:If,updateIssueCommentAttachments:mo,deleteIssueCommentAttachment:po,deleteIssueCommentAttachments:Ao}=ti.actions,yo=t=>t.issueCommentAttachmentReducer.instances,fo=d.createSelector([yo],t=>Object.values(t)),So=t=>e=>e.issueCommentAttachmentReducer.instances[t],Of=f(d.createSelector([fo,(t,e)=>e],(t,e)=>g(t.filter(({issue_comment:s})=>e===s)))),go=ti.reducer,ge=I(t=>t.uuid),bo=ge.getInitialState({}),ai=d.createSlice({name:"issueComments",initialState:bo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,bo)),reducers:{initializeIssueComments:ge.initialize,addIssueComment:ge.addOne,addIssueComments:ge.addMany,setIssueComment:ge.setOne,setIssueComments:ge.setMany,updateIssueComment:ge.updateOne,updateIssueComments:ge.updateMany,deleteIssueComment:ge.deleteOne,deleteIssueComments:ge.deleteMany}}),{initializeIssueComments:_f,addIssueComment:ii,addIssueComments:Rf,setIssueComment:ci,setIssueComments:Po,updateIssueComment:vf,updateIssueComments:wf,deleteIssueComment:ni,deleteIssueComments:Mf}=ai.actions,Fo=t=>t.issueCommentReducer.instances,ri=t=>e=>e.issueCommentReducer.instances[t],Ef=f(d.createSelector([Fo,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.issue===e)))),To=ai.reducer,be=I(t=>t.uuid),Io=be.getInitialState({}),di=d.createSlice({name:"issues",initialState:Io,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Io)),reducers:{initializeIssues:be.initialize,addIssue:be.addOne,addIssues:be.addMany,setIssue:be.setOne,setIssues:be.setMany,updateIssue:be.updateOne,updateIssues:be.updateMany,deleteIssue:be.deleteOne,deleteIssues:be.deleteMany}}),{initializeIssues:Oo,addIssue:ui,addIssues:_o,setIssue:jf,setIssues:qf,updateIssue:qt,updateIssues:Vf,deleteIssue:oi,deleteIssues:Ro}=di.actions,li=t=>t.issueReducer.instances,zf=d.createSelector([li],t=>Object.values(t)),hi=t=>e=>e.issueReducer.instances[t],Uf=f(d.createSelector([li,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectIssuesByIds: No issue exists with the id",i)}return g(s)})),vo=di.reducer,Pe=I(t=>t.uuid),wo=Pe.getInitialState({}),mi=d.createSlice({name:"issueTypeAttachments",initialState:wo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,wo)),reducers:{initializeIssueTypeAttachments:Pe.initialize,addIssueTypeAttachment:Pe.addOne,addIssueTypeAttachments:Pe.addMany,setIssueTypeAttachment:Pe.setOne,setIssueTypeAttachments:Pe.setMany,updateIssueTypeAttachment:Pe.updateOne,updateIssueTypeAttachments:Pe.updateMany,deleteIssueTypeAttachment:Pe.deleteOne,deleteIssueTypeAttachments:Pe.deleteMany}}),{initializeIssueTypeAttachments:pi,addIssueTypeAttachment:Df,addIssueTypeAttachments:Mo,setIssueTypeAttachment:Eo,setIssueTypeAttachments:Cf,updateIssueTypeAttachment:kf,updateIssueTypeAttachments:jo,deleteIssueTypeAttachment:qo,deleteIssueTypeAttachments:Vo}=mi.actions,zo=t=>t.issueTypeAttachmentReducer.instances,Uo=d.createSelector([zo],t=>Object.values(t)),Do=t=>e=>e.issueTypeAttachmentReducer.instances[t],Bf=f(d.createSelector([Uo,(t,e)=>e],(t,e)=>g(t.filter(({issue_type:s})=>e===s)))),Co=mi.reducer,Fe=I(t=>t.uuid),ko=Fe.getInitialState({}),Ai=d.createSlice({name:"issueTypeFieldsAttachments",initialState:ko,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,ko)),reducers:{initializeIssueTypeFieldsAttachments:Fe.initialize,addIssueTypeFieldsAttachment:Fe.addOne,addIssueTypeFieldsAttachments:Fe.addMany,setIssueTypeFieldsAttachment:Fe.setOne,setIssueTypeFieldsAttachments:Fe.setMany,updateIssueTypeFieldsAttachment:Fe.updateOne,updateIssueTypeFieldsAttachments:Fe.updateMany,deleteIssueTypeFieldsAttachment:Fe.deleteOne,deleteIssueTypeFieldsAttachments:Fe.deleteMany}}),{initializeIssueTypeFieldsAttachments:Bo,addIssueTypeFieldsAttachment:$f,addIssueTypeFieldsAttachments:$o,setIssueTypeFieldsAttachment:Gf,setIssueTypeFieldsAttachments:Lf,updateIssueTypeFieldsAttachment:Nf,updateIssueTypeFieldsAttachments:Go,deleteIssueTypeFieldsAttachment:Hf,deleteIssueTypeFieldsAttachments:Lo}=Ai.actions,No=t=>t.issueTypeFieldsAttachmentReducer.instances,Ho=d.createSelector([No],t=>Object.values(t)),Wf=f(d.createSelector([Ho,(t,e)=>e],(t,e)=>g(t.filter(s=>s.fields_revision===e)))),Kf=t=>e=>e.issueTypeFieldsAttachmentReducer.instances[t],Wo=Ai.reducer,Te=I(t=>t.uuid),Ko=Te.getInitialState({}),yi=d.createSlice({name:"issueTypeFieldValues",initialState:Ko,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Ko)),reducers:{initializeIssueTypeFieldValues:Te.initialize,addIssueTypeFieldValues:Te.addOne,addIssueTypeFieldValuesMany:Te.addMany,setIssueTypeFieldValues:Te.setOne,setIssueTypeFieldValuesMany:Te.setMany,updateIssueTypeFieldValues:Te.updateOne,updateIssueTypeFieldValuesMany:Te.updateMany,deleteIssueTypeFieldValues:Te.deleteOne,deleteIssueTypeFieldValuesMany:Te.deleteMany}}),{initializeIssueTypeFieldValues:Yo,addIssueTypeFieldValues:fi,addIssueTypeFieldValuesMany:Yf,setIssueTypeFieldValues:Jf,setIssueTypeFieldValuesMany:Zf,updateIssueTypeFieldValues:ct,updateIssueTypeFieldValuesMany:Xf,deleteIssueTypeFieldValues:Si,deleteIssueTypeFieldValuesMany:Qf}=yi.actions,Jo=t=>t.issueTypeFieldValuesReducer.instances,gi=d.createSelector([Jo],t=>Object.values(t)),xf=f(d.createSelector([gi,(t,e)=>e],(t,e)=>g(t.filter(s=>s.issue===e)))),bi=t=>e=>e.issueTypeFieldValuesReducer.instances[t],Zo=yi.reducer,Ie=I(t=>t.uuid),Xo=Ie.getInitialState({}),Pi=d.createSlice({name:"issueTypeFields",initialState:Xo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Xo)),reducers:{initializeIssueTypeFields:Ie.initialize,addIssueTypeFields:Ie.addOne,addIssueTypeFieldsMany:Ie.addMany,setIssueTypeFields:Ie.setOne,setIssueTypeFieldsMany:Ie.setMany,updateIssueTypeFields:Ie.updateOne,updateIssueTypeFieldsMany:Ie.updateMany,deleteIssueTypeFields:Ie.deleteOne,deleteIssueTypeFieldsMany:Ie.deleteMany}}),{initializeIssueTypeFields:Qo,addIssueTypeFields:xo,addIssueTypeFieldsMany:eS,setIssueTypeFields:tS,setIssueTypeFieldsMany:sS,updateIssueTypeFields:el,updateIssueTypeFieldsMany:aS,deleteIssueTypeFields:tl,deleteIssueTypeFieldsMany:iS}=Pi.actions,sl=t=>t.issueTypeFieldsReducer.instances,Vt=d.createSelector([sl],t=>Object.values(t)),cS=f(d.createSelector([Vt,(t,e)=>e],(t,e)=>g(t.filter(s=>s.issue_type===e)))),nS=f(d.createSelector([Vt,(t,e)=>e],(t,e)=>t.filter(s=>s.issue_type===e).sort((s,i)=>s.submitted_at>i.submitted_at?-1:1)[0])),rS=f(d.createSelector([Vt,gi,(t,e)=>e],(t,e,s)=>{const i=new Set(t.filter(c=>c.issue_type===s).map(c=>c.uuid));return g(e.filter(c=>i.has(c.fields_revision)))})),dS=t=>e=>e.issueTypeFieldsReducer.instances[t],al=Pi.reducer,Oe=I(t=>t.uuid),il=Oe.getInitialState({}),Fi=d.createSlice({name:"issueTypeFieldValuesAttachments",initialState:il,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,il)),reducers:{initializeIssueTypeFieldValuesAttachments:Oe.initialize,addIssueTypeFieldValuesAttachment:Oe.addOne,addIssueTypeFieldValuesAttachments:Oe.addMany,setIssueTypeFieldValuesAttachment:Oe.setOne,setIssueTypeFieldValuesAttachments:Oe.setMany,updateIssueTypeFieldValuesAttachment:Oe.updateOne,updateIssueTypeFieldValuesAttachments:Oe.updateMany,deleteIssueTypeFieldValuesAttachment:Oe.deleteOne,deleteIssueTypeFieldValuesAttachments:Oe.deleteMany}}),{initializeIssueTypeFieldValuesAttachments:cl,addIssueTypeFieldValuesAttachment:uS,addIssueTypeFieldValuesAttachments:zt,setIssueTypeFieldValuesAttachment:oS,setIssueTypeFieldValuesAttachments:lS,updateIssueTypeFieldValuesAttachment:hS,updateIssueTypeFieldValuesAttachments:nl,deleteIssueTypeFieldValuesAttachment:mS,deleteIssueTypeFieldValuesAttachments:Ut}=Fi.actions,Ti=t=>t.issueTypeFieldValuesAttachmentReducer.instances,rl=d.createSelector([Ti],t=>Object.values(t)),pS=t=>e=>e.issueTypeFieldValuesAttachmentReducer.instances[t],dl=f(d.createSelector([Ti,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),ul=f(d.createSelector([rl,(t,e)=>e],(t,e)=>g(t.filter(s=>s.field_values===e)))),ol=Fi.reducer,D=I(t=>t.uuid),ll=D.getInitialState({}),Ii=d.createSlice({name:"issueTypes",initialState:ll,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,ll)),reducers:{initializeIssueTypes:D.initialize,addIssueType:D.addOne,addIssueTypes:D.addMany,setIssueType:D.setOne,setIssueTypes:D.setMany,updateIssueType:D.updateOne,updateIssueTypes:D.updateMany,deleteIssueType:D.deleteOne,deleteIssueTypes:D.deleteMany,removeIssueType:D.deleteOne}}),{initializeIssueTypes:hl,addIssueType:ml,addIssueTypes:AS,setIssueType:nt,setIssueTypes:yS,updateIssueType:pl,updateIssueTypes:fS,deleteIssueType:SS,deleteIssueTypes:gS,removeIssueType:Oi}=Ii.actions,Al=t=>t.issueTypeReducer.instances,yl=d.createSelector(Al,t=>Object.values(t)),_i=t=>e=>e.issueTypeReducer.instances[t],bS=t=>e=>{const s=[];for(const i of t){const c=e.issueTypeReducer.instances[i];c?s.push(c):console.warn("selectIssueTypesByIds: No issue type exists with the id",i)}return s},PS=f(d.createSelector([yl,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Ri=f(d.createSelector([t=>t.issueReducer.instances,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.issue_type===e)))),FS=t=>e=>Ri(t)(e).length,fl=Ii.reducer,_e=I(t=>t.uuid),Sl=_e.getInitialState({}),vi=d.createSlice({name:"issueUpdates",initialState:Sl,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Sl)),reducers:{initializeIssueUpdates:_e.initialize,addIssueUpdate:_e.addOne,addIssueUpdates:_e.addMany,setIssueUpdate:_e.setOne,setIssueUpdates:_e.setMany,updateIssueUpdate:_e.updateOne,updateIssueUpdates:_e.updateMany,deleteIssueUpdate:_e.deleteOne,deleteIssueUpdates:_e.deleteMany}}),{initializeIssueUpdates:gl,addIssueUpdate:bl,addIssueUpdates:Pl,setIssueUpdate:TS,setIssueUpdates:IS,updateIssueUpdate:OS,updateIssueUpdates:_S,deleteIssueUpdate:Fl,deleteIssueUpdates:Tl}=vi.actions,Il=t=>t.issueUpdateReducer.instances,Ol=f(d.createSelector([Il,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.issue===e)))),_l=vi.reducer,Re=I(t=>t.id),Rl=Re.getInitialState({currentUser:null}),wi=d.createSlice({name:"users",initialState:Rl,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Rl)),reducers:{initializeUsers:Re.initialize,setUsers:Re.setMany,setUser:Re.setOne,addUsers:Re.addMany,addUser:Re.addOne,updateUsers:Re.updateMany,updateUser:Re.updateOne,deleteUser:Re.deleteOne,deleteUsers:Re.deleteMany,setCurrentUser:(t,e)=>{t.currentUser=e.payload},setProfilePicture:(t,e)=>{if(!t.currentUser)return;t.currentUser.profile.file=e.payload.file??null,t.currentUser.profile.file_sha1=e.payload.file_sha1??null;const s=t.instances[t.currentUser.id];if(!s)throw new Error("Unable to find current user in users slice");s.profile.file=e.payload.file??null,s.profile.file_sha1=e.payload.file_sha1??null}}}),{initializeUsers:vl,setUsers:RS,setUser:vS,addUsers:wS,addUser:wl,updateUsers:MS,updateUser:ES,deleteUser:Ml,deleteUsers:jS,setCurrentUser:qS,setProfilePicture:VS}=wi.actions,El=wi.reducer,jl=t=>t.userReducer.currentUser,Dt=t=>t.userReducer.instances,Mi=d.createSelector([Dt],t=>Object.values(t)),ql=t=>e=>e.userReducer.instances[t],zS=f(d.createSelector([Dt,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectUsersByIds: No user exists with the uuid",i)}return g(s)})),ve=I(t=>t.uuid),Vl=ve.getInitialState({}),Ei=d.createSlice({name:"organizationAccess",initialState:Vl,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Vl)),reducers:{initializeOrganizationAccesses:ve.initialize,addOrganizationAccess:ve.addOne,addOrganizationAccesses:ve.addMany,setOrganizationAccess:ve.setOne,setOrganizationAccesses:ve.setMany,updateOrganizationAccess:ve.updateOne,updateOrganizationAccesses:ve.updateMany,deleteOrganizationAccess:ve.deleteOne,deleteOrganizationAccesses:ve.deleteMany}}),{initializeOrganizationAccesses:zl,addOrganizationAccess:Ul,addOrganizationAccesses:US,setOrganizationAccess:DS,setOrganizationAccesses:CS,updateOrganizationAccess:Ct,updateOrganizationAccesses:kS,deleteOrganizationAccess:Dl,deleteOrganizationAccesses:BS}=Ei.actions,Cl=Ei.reducer,ji=t=>t.organizationAccessReducer.instances,qi=t=>e=>e.organizationAccessReducer.instances[t],$S=d.createSelector([jl,ji],(t,e)=>Object.values(e).find(i=>i.user===(t==null?void 0:t.id))??null),kl=d.createSelector([ji],t=>{const e={};for(const s of Object.values(t))e[s.user]=s;return lt(e)}),GS=f(d.createSelector([Dt,kl,(t,e)=>e],(t,e,s)=>g(Object.values(t).filter(i=>{const c=e[i.id];return!!c&&c.organization===s})))),we=I(t=>t.uuid),Bl=we.getInitialState({}),Vi=d.createSlice({name:"organizations",initialState:Bl,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Bl)),reducers:{initializeOrganizations:we.initialize,setOrganizations:we.setMany,setOrganization:we.setOne,addOrganizations:we.addMany,addOrganization:we.addOne,updateOrganizations:we.updateMany,updateOrganization:we.updateOne,deleteOrganization:we.deleteOne,deleteOrganizations:we.deleteMany}}),{initializeOrganizations:$l,setOrganizations:LS,setOrganization:NS,addOrganizations:HS,addOrganization:Gl,updateOrganizations:WS,updateOrganization:Ll,deleteOrganization:KS,deleteOrganizations:YS}=Vi.actions,Nl=t=>t.organizationReducer.instances,JS=d.createSelector([Nl],t=>Object.values(t)),ZS=t=>e=>e.organizationReducer.instances[t],Hl=Vi.reducer,Wl=(t,e,s)=>{const i=t.uuid?t:{...t,uuid:Ge.v4()};return{payload:i,type:"",meta:{offline:{effect:{timestamp:new Date().toISOString(),request:i,BASE_URL:e,serviceName:s}}}}},Kl={deletedRequests:[],latestRetryTime:0},zi=d.createSlice({name:"outbox",initialState:Kl,extraReducers:t=>t.addCase(F,e=>Object.assign(e,Kl)),reducers:{enqueueRequest:{reducer:(t,e)=>t,prepare:t=>{console.debug("Preparing to enqueue request",t);const{BASE_URL:e,serviceName:s,...i}=t;return Wl(i,e,s)}},markForDeletion(t,e){t.deletedRequests.push(e.payload)},markAsDeleted(t,e){const s=t.deletedRequests.indexOf(e.payload);s!==-1&&t.deletedRequests.splice(s,1)},_setLatestRetryTime:(t,e)=>{t.latestRetryTime=e.payload}}}),XS=t=>t.outboxReducer.deletedRequests,QS=t=>t.outboxReducer.latestRetryTime,{enqueueRequest:Yl,markForDeletion:xS,markAsDeleted:Jl,_setLatestRetryTime:Zl}=zi.actions,Xl=zi.reducer,Me=I(t=>t.uuid),Ql=Me.getInitialState({}),Ui=d.createSlice({name:"projectAccess",initialState:Ql,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Ql)),reducers:{initializeProjectAccesses:Me.initialize,addProjectAccess:Me.addOne,addProjectAccesses:Me.addMany,setProjectAccess:Me.setOne,setProjectAccesses:Me.setMany,updateProjectAccess:Me.updateOne,updateProjectAccesses:Me.updateMany,deleteProjectAccess:Me.deleteOne,deleteProjectAccesses:Me.deleteMany}}),{initializeProjectAccesses:xl,addProjectAccess:Di,addProjectAccesses:eh,setProjectAccess:eg,setProjectAccesses:tg,updateProjectAccess:rt,updateProjectAccesses:sg,deleteProjectAccess:Ci,deleteProjectAccesses:th}=Ui.actions,sh=Ui.reducer,ki=t=>t.projectAccessReducer.instances,kt=d.createSelector(ki,t=>Object.values(t)),Bi=t=>e=>e.projectAccessReducer.instances[t],ah=f(d.createSelector([ki,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.project===e)))),ag=f(d.createSelector([kt,(t,e)=>e],(t,e)=>{const s={};for(const i of t.filter(c=>c.project===e))s[i.user]=i;return s})),ig=f(d.createSelector([Mi,kt,(t,e)=>e],(t,e,s)=>{const i=new Set(e.filter(c=>c.project===s).map(c=>c.user));return g(t.filter(c=>i.has(c.id)))})),Ee=I(t=>t.uuid),ih=Ee.getInitialState({}),$i=d.createSlice({name:"projectAttachments",initialState:ih,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,ih)),reducers:{initializeProjectAttachments:Ee.initialize,addProjectAttachment:Ee.addOne,addProjectAttachments:Ee.addMany,setProjectAttachment:Ee.setOne,setProjectAttachments:Ee.setMany,updateProjectAttachment:Ee.updateOne,updateProjectAttachments:Ee.updateMany,deleteProjectAttachment:Ee.deleteOne,deleteProjectAttachments:Ee.deleteMany}}),{initializeProjectAttachments:ch,addProjectAttachment:cg,addProjectAttachments:nh,setProjectAttachment:rh,setProjectAttachments:dh,updateProjectAttachment:ng,updateProjectAttachments:uh,deleteProjectAttachment:oh,deleteProjectAttachments:Gi}=$i.actions,lh=t=>t.projectAttachmentReducer.instances,hh=d.createSelector([lh],t=>Object.values(t)),mh=t=>e=>e.projectAttachmentReducer.instances[t],ph=f(d.createSelector([hh,(t,e)=>e],(t,e)=>g(t.filter(({project:s})=>e===s)))),Ah=$i.reducer,je=I(t=>t.uuid),yh=je.getInitialState({activeProjectFileId:null,isImportingProjectFile:!1}),Li=d.createSlice({name:"projectFiles",initialState:yh,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,yh)),reducers:{initializeProjectFiles:je.initialize,setProjectFile:je.setOne,setProjectFiles:je.setMany,addProjectFile:je.addOne,addProjectFiles:je.addMany,updateProjectFile:je.updateOne,updateProjectFiles:je.updateMany,deleteProjectFile:je.deleteOne,deleteProjectFiles:je.deleteMany,setIsImportingProjectFile:(t,e)=>{t.isImportingProjectFile=e.payload},saveActiveProjectFileBounds:(t,e)=>{const s=t.activeProjectFileId;if(!s)throw new Error("Tried to save bounds for active project file, but no active project file was set.");if(!t.instances[s])throw new Error(`Tried to save bounds for active project file, but project file with ID ${s}
1
+ (function(a,z){typeof exports=="object"&&typeof module<"u"?z(exports,require("@redux-offline/redux-offline/lib/types"),require("@reduxjs/toolkit"),require("superagent"),require("uuid"),require("file-saver"),require("@redux-offline/redux-offline"),require("@redux-offline/redux-offline/lib/defaults"),require("buffer"),require("localforage"),require("redux-persist-migrate"),require("@overmap-ai/forms"),require("idb"),require("jwt-decode"),require("dependency-graph"),require("@tiptap/core")):typeof define=="function"&&define.amd?define(["exports","@redux-offline/redux-offline/lib/types","@reduxjs/toolkit","superagent","uuid","file-saver","@redux-offline/redux-offline","@redux-offline/redux-offline/lib/defaults","buffer","localforage","redux-persist-migrate","@overmap-ai/forms","idb","jwt-decode","dependency-graph","@tiptap/core"],z):(a=typeof globalThis<"u"?globalThis:a||self,z(a["overmap-core"]={},null,a.toolkit,a.request,a.uuid,a.fileSaver,a.reduxOffline,a.offlineConfig,null,a.localforage,a.createMigration,null,a.idb,a.jwtDecode,a.dependencyGraph))})(this,function(a,z,d,$e,Ge,om,lm,lc,bP,hm,mm,PP,pm,Am,ym){"use strict";var SP=Object.defineProperty;var gP=(a,z,d)=>z in a?SP(a,z,{enumerable:!0,configurable:!0,writable:!0,value:d}):a[z]=d;var S=(a,z,d)=>gP(a,typeof z!="symbol"?z+"":z,d);var um;const hc=Object.freeze([]),mc=Object.freeze({});var pc=(t=>(t[t.GUEST=0]="GUEST",t[t.BASIC=2]="BASIC",t[t.ADMIN=4]="ADMIN",t))(pc||{}),h=(t=>(t.GET="GET",t.POST="POST",t.PATCH="PATCH",t.PUT="PUT",t.DELETE="DELETE",t))(h||{}),Ac=(t=>(t.Issue="issue",t.Asset="asset",t.AssetType="asset_type",t.Project="project",t.Document="document",t))(Ac||{}),Gt=(t=>(t[t.LOWEST=0]="LOWEST",t[t.LOW=2]="LOW",t[t.MEDIUM=4]="MEDIUM",t[t.HIGH=6]="HIGH",t[t.HIGHEST=8]="HIGHEST",t))(Gt||{}),Lt=(t=>(t[t.BACKLOG=0]="BACKLOG",t[t.SELECTED=2]="SELECTED",t[t.DONE=4]="DONE",t))(Lt||{}),E=(t=>(t.STATUS="status",t.PRIORITY="priority",t.CATEGORY="category",t.DESCRIPTION="description",t.TITLE="title",t.ASSIGNED_TO="assigned_to",t.DUE_DATE="due_date",t))(E||{});const fm=Lt.BACKLOG,Sm=Gt.MEDIUM,yc=6e4;function I(t){return{addOne:(p,A)=>{const y=t(A.payload);p.instances[y]=A.payload},addMany:(p,A)=>{for(const y of A.payload){const b=t(y);p.instances[b]=y}},setOne:(p,A)=>{const y=t(A.payload);p.instances[y]=A.payload},setMany:(p,A)=>{for(const y of A.payload){const b=t(y);p.instances[b]=y}},updateOne:(p,A)=>{const y=t(A.payload);p.instances[y]=A.payload},updateMany:(p,A)=>{for(const y of A.payload){const b=t(y);p.instances[b]=y}},deleteOne:(p,A)=>{delete p.instances[A.payload]},deleteMany:(p,A)=>{for(const y of A.payload)delete p.instances[y]},initialize:(p,A)=>{p.instances={};const y=new Set;for(const b of A.payload){const P=t(b);y.add(P),p.instances[P]=b}y.size!==A.payload.length&&console.warn("duplicate ids detected when initializing model instances.")},getInitialState:p=>({...p,instances:{}})}}function gm(){return{initializeSelection:(m,u)=>{m.selection=Array.from(new Set(u.payload))},selectOne:(m,u)=>{new Set(m.selection).has(u.payload)||m.selection.push(u.payload)},selectMany:(m,u)=>{const l=new Set(m.selection);for(const p of u.payload)l.has(p)||l.add(p);m.selection=Array.from(l)},unselectOne:(m,u)=>{const l=new Set(m.selection);l.has(u.payload)&&(l.delete(u.payload),m.selection=Array.from(l))},unselectMany:(m,u)=>{const l=new Set(m.selection);for(const p of u.payload)l.has(p)&&l.delete(p);m.selection=Array.from(l)},toggleOne:(m,u)=>{const l=new Set(m.selection);l.has(u.payload)?l.delete(u.payload):l.add(u.payload),m.selection=Array.from(l)},toggleMany:(m,u)=>{const l=new Set(m.selection);for(const p of u.payload)l.has(p)?l.delete(p):l.add(p);m.selection=Array.from(l)},getInitialState:m=>({...m,selection:[]})}}const Ye="versioning",F=d.createAction("RESET"),M=d.createAction("RESET_PROJECT_STATE"),_=d.createAction("RESET_ORGANIZATION_STATE");um=Symbol.toStringTag;class fc{constructor(){S(this,um,"Promise");S(this,"_promise");S(this,"_resolve");S(this,"_reject");S(this,"_state","pending");this._resolve=null,this._reject=null,this._promise=new Promise((e,s)=>{this._resolve=e,this._reject=s})}get state(){return this._state}then(e,s){return this._promise.then(e,s)}catch(e){return this._promise.catch(e)}resolve(e){if(!this._resolve)throw new Error("No resolve callback");this._resolve(e),this._state="fulfilled"}reject(e){if(!this._reject)throw e;this._reject(e),this._state="rejected"}finally(e){throw new Error("`finally` not implemented")}}const bm=t=>({type:"Point",coordinates:t}),Pm=t=>({type:"MultiPoint",coordinates:t}),Fm=(t,e)=>t[0]===e[0]&&t[1]===e[1];let Nt=!1;["true","1"].includes("".toLowerCase())&&(Nt=!0);function Tm(t,e){if(t===e)return!0;if(typeof t!=typeof e)return!1;const s=Object.keys(t),i=Object.keys(e),c=s.length;if(c!==i.length)return!1;for(let n=0;n<c;n++){const r=s[n];if(!Object.prototype.hasOwnProperty.call(e,r)||t[r]!==e[r])return!1}return!0}function Ht(t){const e={};return function(){const s=Array.prototype.slice.call(arguments);return s in e?(Nt&&console.debug(`Memoization debug: Using memorized return value for ${t.toString()}(`,s,")"),e[s]):(Nt&&console.debug(`Memoization debug: Cache miss! Memoizing ${t.toString()}(`,s,")"),e[s]=t.apply(this,s))}}function Im(t,e){if(t.length!==e.length)return!1;for(let s=0;s<t.length;s++)if(t[s]!==e[s])return!1;return!0}const g=t=>t.length===0?hc:t,lt=t=>Object.keys(t).length===0?mc:t,Sc=Ht(t=>{if(!t)return"";const e=new Date(t),s=e.getFullYear()===Wt.getFullYear(),i={day:"numeric",month:"short"};return s||(i.year="numeric"),e.toLocaleDateString([],i)}),Om=new Intl.RelativeTimeFormat([],{style:"long",numeric:"auto"}),_m=1e3*86400,Wt=new Date,Rm=t=>new Date(t).toDateString()===Wt.toDateString(),vm=Ht((t,e,s)=>{const i=Math.round((new Date(t).getTime()-Wt.getTime())/_m);return i<e||i>s?Sc(t):Om.format(i,"days")});function wm(t){return new Uint8Array(t).reduce((s,i)=>s+i.toString(16).padStart(2,"0"),"")}const Kt=async(t,e)=>{e||(e=await Le(t));let s=t.type;if(s.includes("/")&&(s=s.split("/")[1]),!s)throw new Error(`Could not extract file type from ${t.type}`);return`${e}.${s}`};function Le(t){return new Promise((e,s)=>{const i=new FileReader;i.onload=()=>{const c=i.result;if(!c){s(new Error("FileReader did not return a valid ArrayBuffer."));return}crypto.subtle.digest("SHA-1",c).then(n=>{const r=wm(n);e(r)})},i.readAsArrayBuffer(t)})}function Mm(t){if(!t.name||!t.type||!t.size){const e="File has no name, type, and/or size";throw new Error(e)}return`${t.name}&${t.type}${t.size}`}function gc(t,e){return new File([t],e,{type:t.type})}function Em(t,e){const s=document.createElement("a");s.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(e)),s.setAttribute("download",t),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)}const jm=async t=>{const e={};for(const s of t){const i=await Le(s);e[i]={sha1:i,extension:s.name.split(".").pop()||"",file_type:s.type,size:s.size}}return Object.values(e)},bc=async t=>(await fetch(t)).blob(),qm=t=>new Promise((e,s)=>{const i=new FileReader;i.onloadend=()=>{var c;e(((c=i.result)==null?void 0:c.toString())||"")},i.readAsDataURL(t)});function Vm(t){const e=new Blob([t]);om.saveAs(e,t.name)}const Pc={};function zm(t,e,s,...i){const c=Pc[t];let n=!1;c?c[e]||(c[e]=!0,n=!0):(Pc[t]={[e]:!0},n=!0),n&&console[s](...i)}const Fc=["created_at","updated_at","index","revision"];function T(t){return{...t,uuid:Ge.v4()}}function Tc(t){const e={};for(const s of t)e[s.uuid]=s;return e}function Um(t,e=void 0,s=255){let i=t.replace(/[^a-z0-9_\-.]/gi,"_").replace(/_{2,}/g,"_");if(!e){const n=t.split(".");n.length>1&&(e=n[n.length-1])}e&&!e.startsWith(".")&&(e="."+e);const c=e?e.length:0;return i.length+c>s&&(i=i.slice(0,s-c)+(e||"")),i}function Dm(t){return t.toLowerCase().replace(" ","-")}function Cm(t,e=!1){return t.normalize("NFKD").toLowerCase().replace(/[^\w\s-]/g,"").trim().replace(/[-\s]+/g,e?"_":"-")}function km(t,e){if(t.length<=e)return t;const s=t.slice(0,e-1);return s.slice(0,s.lastIndexOf(" "))+"…"}const f=t=>e=>s=>t(s,e);function Ic(t,e,s){return s.findIndex(i=>i.uuid===t.uuid)===e}function Bm(t,e,s){return s.findIndex(i=>i.file_sha1===t.file_sha1)===e}const $m=/^.+@.+\..+$/;function v(t){const e={...t};for(const s of[...Fc,"created_by"])s in e&&delete e[s];return e}const C=I(t=>t.uuid),Oc=C.getInitialState({}),Yt=d.createSlice({name:"agents",initialState:Oc,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Oc)),reducers:{initializeConversations:C.initialize,addConversation:C.addOne,addConversations:C.addMany,setConversation:C.setOne,setConversations:C.setMany,updateConversation:C.updateOne,updateConversations:C.updateMany,deleteConversation:C.deleteOne,deleteConversations:C.deleteMany}}),{initializeConversations:_c,addConversation:Rc,addConversations:Gm,setConversation:vc,setConversations:Lm,updateConversation:wc,updateConversations:Nm,deleteConversation:Hm,deleteConversations:Wm}=Yt.actions,Jt=t=>t.agentsReducer.instances,Km=d.createSelector([Jt],t=>Object.values(t)),Ym=f(d.createSelector([Jt,(t,e)=>e],(t,e)=>t[e])),Mc=Yt.reducer,k=I(t=>t.uuid),Ec=k.getInitialState({}),Zt=d.createSlice({name:"assetAttachments",initialState:Ec,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Ec)),reducers:{initializeAssetAttachments:k.initialize,addAssetAttachment:k.addOne,addAssetAttachments:k.addMany,setAssetAttachment:k.setOne,setAssetAttachments:k.setMany,updateAssetAttachment:k.updateOne,updateAssetAttachments:k.updateMany,deleteAssetAttachment:k.deleteOne,deleteAssetAttachments:k.deleteMany}}),{initializeAssetAttachments:Xt,addAssetAttachment:Jm,addAssetAttachments:Qt,setAssetAttachment:jc,setAssetAttachments:Zm,updateAssetAttachment:Xm,updateAssetAttachments:qc,deleteAssetAttachment:Vc,deleteAssetAttachments:xt}=Zt.actions,zc=t=>t.assetAttachmentReducer.instances,Uc=d.createSelector([zc],t=>Object.values(t)),Dc=t=>e=>e.assetAttachmentReducer.instances[t],Cc=f(d.createSelector([Uc,(t,e)=>e],(t,e)=>g(t.filter(({asset:s})=>e===s)))),kc=Zt.reducer,B=I(t=>t.uuid),Bc=B.getInitialState({}),es=d.createSlice({name:"assetProcedureAttachments",initialState:Bc,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Bc)),reducers:{initializeAssetProcedureAttachments:B.initialize,addAssetProcedureAttachment:B.addOne,addAssetProcedureAttachments:B.addMany,setAssetProcedureAttachment:B.setOne,setAssetProcedureAttachments:B.setMany,updateAssetProcedureAttachment:B.updateOne,updateAssetProcedureAttachments:B.updateMany,deleteAssetProcedureAttachment:B.deleteOne,deleteAssetProcedureAttachments:B.deleteMany}}),{initializeAssetProcedureAttachments:$c,addAssetProcedureAttachment:Qm,addAssetProcedureAttachments:Gc,setAssetProcedureAttachment:Lc,setAssetProcedureAttachments:xm,updateAssetProcedureAttachment:ep,updateAssetProcedureAttachments:Nc,deleteAssetProcedureAttachment:Hc,deleteAssetProcedureAttachments:Wc}=es.actions,Kc=t=>t.assetProcedureAttachmentReducer.instances,Yc=d.createSelector([Kc],t=>Object.values(t)),Jc=t=>e=>e.assetProcedureAttachmentReducer.instances[t],tp=f(d.createSelector([Yc,(t,e)=>e],(t,e)=>g(t.filter(({asset_procedure:s})=>e===s)))),Zc=es.reducer,$=I(t=>t.uuid),Xc=$.getInitialState({}),ts=d.createSlice({name:"assetProcedureFieldsAttachments",initialState:Xc,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Xc)),reducers:{initializeAssetProcedureFieldsAttachments:$.initialize,addAssetProcedureFieldsAttachment:$.addOne,addAssetProcedureFieldsAttachments:$.addMany,setAssetProcedureFieldsAttachment:$.setOne,setAssetProcedureFieldsAttachments:$.setMany,updateAssetProcedureFieldsAttachment:$.updateOne,updateAssetProcedureFieldsAttachments:$.updateMany,deleteAssetProcedureFieldsAttachment:$.deleteOne,deleteAssetProcedureFieldsAttachments:$.deleteMany}}),{initializeAssetProcedureFieldsAttachments:Qc,addAssetProcedureFieldsAttachment:sp,addAssetProcedureFieldsAttachments:xc,setAssetProcedureFieldsAttachment:ap,setAssetProcedureFieldsAttachments:ip,updateAssetProcedureFieldsAttachment:cp,updateAssetProcedureFieldsAttachments:en,deleteAssetProcedureFieldsAttachment:np,deleteAssetProcedureFieldsAttachments:tn}=ts.actions,sn=t=>t.assetProcedureFieldsAttachmentReducer.instances,an=d.createSelector([sn],t=>Object.values(t)),rp=f(d.createSelector([an,(t,e)=>e],(t,e)=>g(t.filter(s=>s.fields_revision===e)))),dp=t=>e=>e.assetProcedureFieldsAttachmentReducer.instances[t],cn=ts.reducer,G=I(t=>t.uuid),nn=G.getInitialState({}),ss=d.createSlice({name:"assetProcedureFields",initialState:nn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,nn)),reducers:{initializeAssetProcedureFields:G.initialize,addAssetProcedureFields:G.addOne,addAssetProcedureFieldsMany:G.addMany,setAssetProcedureFields:G.setOne,setAssetProcedureFieldsMany:G.setMany,updateAssetProcedureFields:G.updateOne,updateAssetProcedureFieldsMany:G.updateMany,deleteAssetProcedureFields:G.deleteOne,deleteAssetProcedureFieldsMany:G.deleteMany}}),{initializeAssetProcedureFields:rn,addAssetProcedureFields:dn,addAssetProcedureFieldsMany:up,setAssetProcedureFields:op,setAssetProcedureFieldsMany:lp,updateAssetProcedureFields:un,updateAssetProcedureFieldsMany:hp,deleteAssetProcedureFields:on,deleteAssetProcedureFieldsMany:mp}=ss.actions,ln=t=>t.assetProcedureFieldsReducer.instances,as=d.createSelector([ln],t=>Object.values(t)),pp=f(d.createSelector([as,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure===e)))),Ap=f(d.createSelector([as,(t,e)=>e],(t,e)=>t.filter(s=>s.asset_procedure===e).sort((s,i)=>s.submitted_at>i.submitted_at?-1:1)[0])),yp=t=>e=>e.assetProcedureFieldsReducer.instances[t],hn=ss.reducer,L=I(t=>t.uuid),mn=L.getInitialState({}),is=d.createSlice({name:"assetProcedureFieldValuesAttachments",initialState:mn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,mn)),reducers:{initializeAssetProcedureFieldValuesAttachments:L.initialize,addAssetProcedureFieldValuesAttachment:L.addOne,addAssetProcedureFieldValuesAttachments:L.addMany,setAssetProcedureFieldValuesAttachment:L.setOne,setAssetProcedureFieldValuesAttachments:L.setMany,updateAssetProcedureFieldValuesAttachment:L.updateOne,updateAssetProcedureFieldValuesAttachments:L.updateMany,deleteAssetProcedureFieldValuesAttachment:L.deleteOne,deleteAssetProcedureFieldValuesAttachments:L.deleteMany}}),{initializeAssetProcedureFieldValuesAttachments:pn,addAssetProcedureFieldValuesAttachment:fp,addAssetProcedureFieldValuesAttachments:ht,setAssetProcedureFieldValuesAttachment:Sp,setAssetProcedureFieldValuesAttachments:gp,updateAssetProcedureFieldValuesAttachment:bp,updateAssetProcedureFieldValuesAttachments:An,deleteAssetProcedureFieldValuesAttachment:Pp,deleteAssetProcedureFieldValuesAttachments:mt}=is.actions,cs=t=>t.assetProcedureFieldValuesAttachmentReducer.instances,yn=d.createSelector([cs],t=>Object.values(t)),Fp=t=>e=>e.assetProcedureFieldValuesAttachmentReducer.instances[t],fn=f(d.createSelector([cs,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),Sn=f(d.createSelector([yn,(t,e)=>e],(t,e)=>g(t.filter(s=>s.field_values===e)))),gn=is.reducer,N=I(t=>t.uuid),bn=N.getInitialState({}),ns=d.createSlice({name:"assetProcedureFieldValues",initialState:bn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,bn)),reducers:{initializeAssetProcedureFieldValues:N.initialize,addAssetProcedureFieldValues:N.addOne,addAssetProcedureFieldValuesMany:N.addMany,setAssetProcedureFieldValues:N.setOne,setAssetProcedureFieldValuesMany:N.setMany,updateAssetProcedureFieldValues:N.updateOne,updateAssetProcedureFieldValuesMany:N.updateMany,deleteAssetProcedureFieldValues:N.deleteOne,deleteAssetProcedureFieldValuesMany:N.deleteMany}}),{initializeAssetProcedureFieldValues:Pn,addAssetProcedureFieldValues:rs,addAssetProcedureFieldValuesMany:Fn,setAssetProcedureFieldValues:Tp,setAssetProcedureFieldValuesMany:Ip,updateAssetProcedureFieldValues:Je,updateAssetProcedureFieldValuesMany:Tn,deleteAssetProcedureFieldValues:ds,deleteAssetProcedureFieldValuesMany:In}=ns.actions,On=t=>t.assetProcedureFieldValuesReducer.instances,us=d.createSelector([On],t=>Object.values(t)),Op=f(d.createSelector([us,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset===e)))),_p=f(d.createSelector([us,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure_instance===e)))),os=t=>e=>e.assetProcedureFieldValuesReducer.instances[t],_n=ns.reducer,H=I(t=>t.uuid),Rn=H.getInitialState({}),ls=d.createSlice({name:"assetProcedureInstances",initialState:Rn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Rn)),reducers:{initializeAssetProcedureInstances:H.initialize,addAssetProcedureInstance:H.addOne,addAssetProcedureInstances:H.addMany,setAssetProcedureInstance:H.setOne,setAssetProcedureInstances:H.setMany,updateAssetProcedureInstance:H.updateOne,updateAssetProcedureInstances:H.updateMany,deleteAssetProcedureInstance:H.deleteOne,deleteAssetProcedureInstances:H.deleteMany}}),{initializeAssetProcedureInstances:vn,addAssetProcedureInstance:hs,addAssetProcedureInstances:wn,updateAssetProcedureInstance:Ze,updateAssetProcedureInstances:Rp,deleteAssetProcedureInstance:ms,deleteAssetProcedureInstances:Mn,setAssetProcedureInstance:vp,setAssetProcedureInstances:wp}=ls.actions,ps=t=>t.assetProcedureInstanceReducer.instances,As=d.createSelector([ps],t=>Object.values(t)),En=f(d.createSelector([As,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure===e)))),Mp=f(d.createSelector([As,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_type===e)))),ys=t=>e=>e.assetProcedureInstanceReducer.instances[t],Ep=f(d.createSelector([ps,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c&&s.push(c)}return g(s)})),jn=ls.reducer,W=I(t=>t.uuid),qn=W.getInitialState({}),fs=d.createSlice({name:"assetProcedures",initialState:qn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,qn)),reducers:{initializeAssetProcedures:W.initialize,addAssetProcedure:W.addOne,addAssetProcedures:W.addMany,setAssetProcedure:W.setOne,setAssetProcedures:W.setMany,updateAssetProcedure:W.updateOne,updateAssetProcedures:W.updateMany,deleteAssetProcedure:W.deleteOne,deleteAssetProcedures:W.deleteMany}}),{initializeAssetProcedures:Vn,addAssetProcedure:Ss,addAssetProcedures:jp,updateAssetProcedure:Xe,updateAssetProcedures:qp,deleteAssetProcedure:gs,deleteAssetProcedures:Vp,setAssetProcedure:zp,setAssetProcedures:Up}=fs.actions,bs=t=>t.assetProcedureReducer.instances,zn=d.createSelector([bs],t=>Object.values(t)),Ps=t=>e=>e.assetProcedureReducer.instances[t],Dp=f(d.createSelector([bs,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c&&s.push(c)}return g(s)})),Cp=f(d.createSelector([zn,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Un=fs.reducer,K=I(t=>t.uuid),Dn=K.getInitialState({}),Fs=d.createSlice({name:"assetProcedureStepFieldsAttachments",initialState:Dn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Dn)),reducers:{initializeAssetProcedureStepFieldsAttachments:K.initialize,addAssetProcedureStepFieldsAttachment:K.addOne,addAssetProcedureStepFieldsAttachments:K.addMany,setAssetProcedureStepFieldsAttachment:K.setOne,setAssetProcedureStepFieldsAttachments:K.setMany,updateAssetProcedureStepFieldsAttachment:K.updateOne,updateAssetProcedureStepFieldsAttachments:K.updateMany,deleteAssetProcedureStepFieldsAttachment:K.deleteOne,deleteAssetProcedureStepFieldsAttachments:K.deleteMany}}),{initializeAssetProcedureStepFieldsAttachments:Cn,addAssetProcedureStepFieldsAttachment:kp,addAssetProcedureStepFieldsAttachments:kn,setAssetProcedureStepFieldsAttachment:Bp,setAssetProcedureStepFieldsAttachments:$p,updateAssetProcedureStepFieldsAttachment:Gp,updateAssetProcedureStepFieldsAttachments:Bn,deleteAssetProcedureStepFieldsAttachment:Lp,deleteAssetProcedureStepFieldsAttachments:$n}=Fs.actions,Gn=t=>t.assetProcedureStepFieldsAttachmentReducer.instances,Ln=d.createSelector([Gn],t=>Object.values(t)),Np=f(d.createSelector([Ln,(t,e)=>e],(t,e)=>g(t.filter(s=>s.fields_revision===e)))),Hp=t=>e=>e.assetProcedureStepFieldsAttachmentReducer.instances[t],Nn=Fs.reducer,Y=I(t=>t.uuid),Hn=Y.getInitialState({}),Ts=d.createSlice({name:"assetProcedureStepFields",initialState:Hn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Hn)),reducers:{initializeAssetProcedureStepFields:Y.initialize,addAssetProcedureStepFields:Y.addOne,addAssetProcedureStepFieldsMany:Y.addMany,setAssetProcedureStepFields:Y.setOne,setAssetProcedureStepFieldsMany:Y.setMany,updateAssetProcedureStepFields:Y.updateOne,updateAssetProcedureStepFieldsMany:Y.updateMany,deleteAssetProcedureStepFields:Y.deleteOne,deleteAssetProcedureStepFieldsMany:Y.deleteMany}}),{initializeAssetProcedureStepFields:Wn,addAssetProcedureStepFields:Is,addAssetProcedureStepFieldsMany:Wp,setAssetProcedureStepFields:Kp,setAssetProcedureStepFieldsMany:Yp,updateAssetProcedureStepFields:Qe,updateAssetProcedureStepFieldsMany:Jp,deleteAssetProcedureStepFields:Os,deleteAssetProcedureStepFieldsMany:Zp}=Ts.actions,_s=t=>t.assetProcedureStepFieldsReducer.instances,Rs=d.createSelector([_s],t=>Object.values(t)),Xp=f(d.createSelector([Rs,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure_step===e)))),Qp=f(d.createSelector([Rs,(t,e)=>e],(t,e)=>t.filter(s=>s.asset_procedure_step===e).sort((s,i)=>s.submitted_at>i.submitted_at?-1:1)[0])),xp=d.createSelector([_s],t=>{const e={};for(const s of Object.values(t)){const i=e[s.asset_procedure_step];(!i||i.submitted_at<s.submitted_at)&&(e[s.asset_procedure_step]=s)}return e}),eA=t=>e=>e.assetProcedureStepFieldsReducer.instances[t],Kn=Ts.reducer,J=I(t=>t.uuid),Yn=J.getInitialState({}),vs=d.createSlice({name:"assetProcedureStepFieldValuesAttachments",initialState:Yn,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Yn)),reducers:{initializeAssetProcedureStepFieldValuesAttachments:J.initialize,addAssetProcedureStepFieldValuesAttachment:J.addOne,addAssetProcedureStepFieldValuesAttachments:J.addMany,setAssetProcedureStepFieldValuesAttachment:J.setOne,setAssetProcedureStepFieldValuesAttachments:J.setMany,updateAssetProcedureStepFieldValuesAttachment:J.updateOne,updateAssetProcedureStepFieldValuesAttachments:J.updateMany,deleteAssetProcedureStepFieldValuesAttachment:J.deleteOne,deleteAssetProcedureStepFieldValuesAttachments:J.deleteMany}}),{initializeAssetProcedureStepFieldValuesAttachments:Jn,addAssetProcedureStepFieldValuesAttachment:tA,addAssetProcedureStepFieldValuesAttachments:pt,setAssetProcedureStepFieldValuesAttachment:sA,setAssetProcedureStepFieldValuesAttachments:aA,updateAssetProcedureStepFieldValuesAttachment:iA,updateAssetProcedureStepFieldValuesAttachments:Zn,deleteAssetProcedureStepFieldValuesAttachment:cA,deleteAssetProcedureStepFieldValuesAttachments:At}=vs.actions,ws=t=>t.assetProcedureStepFieldValuesAttachmentReducer.instances,Xn=d.createSelector([ws],t=>Object.values(t)),nA=t=>e=>e.assetProcedureStepFieldValuesAttachmentReducer.instances[t],Qn=f(d.createSelector([ws,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),xn=f(d.createSelector([Xn,(t,e)=>e],(t,e)=>g(t.filter(s=>s.field_values===e)))),er=vs.reducer,Z=I(t=>t.uuid),tr=Z.getInitialState({}),Ms=d.createSlice({name:"assetProcedureStepFieldValues",initialState:tr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,tr)),reducers:{initializeAssetProcedureStepFieldValues:Z.initialize,addAssetProcedureStepFieldValues:Z.addOne,addAssetProcedureStepFieldValuesMany:Z.addMany,setAssetProcedureStepFieldValues:Z.setOne,setAssetProcedureStepFieldValuesMany:Z.setMany,updateAssetProcedureStepFieldValues:Z.updateOne,updateAssetProcedureStepFieldValuesMany:Z.updateMany,deleteAssetProcedureStepFieldValues:Z.deleteOne,deleteAssetProcedureStepFieldValuesMany:Z.deleteMany}}),{initializeAssetProcedureStepFieldValues:sr,addAssetProcedureStepFieldValues:Es,addAssetProcedureStepFieldValuesMany:ar,setAssetProcedureStepFieldValues:rA,setAssetProcedureStepFieldValuesMany:dA,updateAssetProcedureStepFieldValues:xe,updateAssetProcedureStepFieldValuesMany:ir,deleteAssetProcedureStepFieldValues:js,deleteAssetProcedureStepFieldValuesMany:cr}=Ms.actions,nr=t=>t.assetProcedureStepFieldValuesReducer.instances,yt=d.createSelector([nr],t=>Object.values(t)),uA=f(d.createSelector([yt,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset===e)))),oA=f(d.createSelector([yt,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure_instance===e)))),lA=f(d.createSelector([yt,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure_step===e)))),qs=t=>e=>e.assetProcedureStepFieldValuesReducer.instances[t],rr=Ms.reducer,X=I(t=>t.uuid),dr=X.getInitialState({}),Vs=d.createSlice({name:"assetProcedureSteps",initialState:dr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,dr)),reducers:{initializeAssetProcedureSteps:X.initialize,setAssetProcedureStep:X.setOne,setAssetProcedureSteps:X.setMany,addAssetProcedureStep:X.addOne,addAssetProcedureSteps:X.addMany,updateAssetProcedureStep:X.updateOne,updateAssetProcedureSteps:X.updateMany,deleteAssetProcedureStep:X.deleteOne,deleteAssetProcedureSteps:X.deleteMany}}),{initializeAssetProcedureSteps:ur,setAssetProcedureStep:or,setAssetProcedureSteps:hA,addAssetProcedureStep:zs,addAssetProcedureSteps:mA,updateAssetProcedureStep:ft,updateAssetProcedureSteps:pA,deleteAssetProcedureStep:Us,deleteAssetProcedureSteps:AA}=Vs.actions,lr=Vs.reducer,St=t=>t.assetProcedureStepReducer.instances,Ds=t=>e=>e.assetProcedureStepReducer.instances[t],hr=d.createSelector([St],t=>Object.values(t)),yA=f(d.createSelector([St,(t,e)=>e],(t,e)=>{const s={};for(const[i,c]of Object.entries(t))c.asset_procedure===e&&(s[i]=c);return lt(s)})),fA=f(d.createSelector([hr,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure===e)))),SA=f(d.createSelector([St,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectAssetProcedureStepsByIds: No step exists with the id",i)}return g(s)})),Q=I(t=>t.uuid),mr=Q.getInitialState({}),Cs=d.createSlice({name:"assets",initialState:mr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,mr)),reducers:{initializeAssets:Q.initialize,addAsset:Q.addOne,addAssets:Q.addMany,setAsset:Q.setOne,setAssets:Q.setMany,updateAsset:Q.updateOne,updateAssets:Q.updateMany,deleteAsset:Q.deleteOne,deleteAssets:Q.deleteMany}}),{initializeAssets:pr,addAsset:ks,addAssets:gt,updateAsset:et,updateAssets:gA,deleteAsset:Bs,deleteAssets:$s,setAsset:bA,setAssets:PA}=Cs.actions,Gs=t=>t.assetReducer.instances,Ar=d.createSelector([Gs],t=>g(Object.values(t))),Ls=f(d.createSelector([Ar,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_type===e)))),Ns=t=>e=>e.assetReducer.instances[t],yr=f(d.createSelector([Gs,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c&&s.push(c)}return g(s)})),FA=t=>e=>Ls(t)(e).length,fr=Cs.reducer,x=I(t=>t.uuid),Sr=x.getInitialState({}),Hs=d.createSlice({name:"assetStageCompletions",initialState:Sr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Sr)),reducers:{initializeAssetStageCompletions:x.initialize,addAssetStageCompletion:x.addOne,addAssetStageCompletions:x.addMany,setAssetStageCompletion:x.setOne,setAssetStageCompletions:x.setMany,updateAssetStageCompletion:x.updateOne,updateAssetStageCompletions:x.updateMany,deleteAssetStageCompletion:x.deleteOne,deleteAssetStageCompletions:x.deleteMany}}),{initializeAssetStageCompletions:gr,addAssetStageCompletion:Ws,addAssetStageCompletions:Ks,setAssetStageCompletion:TA,setAssetStageCompletions:IA,updateAssetStageCompletion:br,updateAssetStageCompletions:Pr,deleteAssetStageCompletion:Ys,deleteAssetStageCompletions:Js}=Hs.actions,Fr=Hs.reducer,Zs=t=>t.assetStageCompletionReducer.instances,OA=d.createSelector([Zs],t=>Object.values(t)),Tr=t=>e=>e.assetStageCompletionReducer.instances[t],Ir=f(d.createSelector([Zs,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),ee=I(t=>t.uuid),Or=ee.getInitialState({}),Xs=d.createSlice({name:"assetStages",initialState:Or,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Or)),reducers:{initializeAssetStages:ee.initialize,setAssetStage:ee.setOne,setAssetStages:ee.setMany,addAssetStage:ee.addOne,addAssetStages:ee.addMany,updateAssetStage:ee.updateOne,updateAssetStages:ee.updateMany,deleteAssetStage:ee.deleteOne,deleteAssetStages:ee.deleteMany}}),{initializeAssetStages:_r,setAssetStage:Rr,setAssetStages:_A,addAssetStage:Qs,addAssetStages:RA,updateAssetStage:bt,updateAssetStages:vA,deleteAssetStage:xs,deleteAssetStages:wA}=Xs.actions,vr=Xs.reducer,Pt=t=>t.assetStageReducer.instances,ea=t=>e=>e.assetStageReducer.instances[t],wr=d.createSelector([Pt],t=>Object.values(t)),MA=f(d.createSelector([Pt,(t,e)=>e],(t,e)=>{const s={};for(const[i,c]of Object.entries(t))c.asset_procedure===e&&(s[i]=c);return lt(s)})),EA=f(d.createSelector([wr,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_procedure===e)))),jA=f(d.createSelector([Pt,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectStagesFromStageIds: No stage exists with the id",i)}return g(s)})),te=I(t=>t.uuid),Mr=te.getInitialState({}),ta=d.createSlice({name:"assetTypeAttachments",initialState:Mr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Mr)),reducers:{initializeAssetTypeAttachments:te.initialize,addAssetTypeAttachment:te.addOne,addAssetTypeAttachments:te.addMany,setAssetTypeAttachment:te.setOne,setAssetTypeAttachments:te.setMany,updateAssetTypeAttachment:te.updateOne,updateAssetTypeAttachments:te.updateMany,deleteAssetTypeAttachment:te.deleteOne,deleteAssetTypeAttachments:te.deleteMany}}),{initializeAssetTypeAttachments:Er,addAssetTypeAttachment:qA,addAssetTypeAttachments:sa,setAssetTypeAttachment:jr,setAssetTypeAttachments:VA,updateAssetTypeAttachment:zA,updateAssetTypeAttachments:qr,deleteAssetTypeAttachment:Vr,deleteAssetTypeAttachments:aa}=ta.actions,zr=t=>t.assetTypeAttachmentReducer.instances,Ur=d.createSelector([zr],t=>Object.values(t)),Dr=t=>e=>e.assetTypeAttachmentReducer.instances[t],Cr=f(d.createSelector([Ur,(t,e)=>e],(t,e)=>g(t.filter(({asset_type:s})=>e===s)))),kr=ta.reducer,se=I(t=>t.uuid),Br=se.getInitialState({}),ia=d.createSlice({name:"assetTypeFieldsAttachments",initialState:Br,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Br)),reducers:{initializeAssetTypeFieldsAttachments:se.initialize,addAssetTypeFieldsAttachment:se.addOne,addAssetTypeFieldsAttachments:se.addMany,setAssetTypeFieldsAttachment:se.setOne,setAssetTypeFieldsAttachments:se.setMany,updateAssetTypeFieldsAttachment:se.updateOne,updateAssetTypeFieldsAttachments:se.updateMany,deleteAssetTypeFieldsAttachment:se.deleteOne,deleteAssetTypeFieldsAttachments:se.deleteMany}}),{initializeAssetTypeFieldsAttachments:$r,addAssetTypeFieldsAttachment:UA,addAssetTypeFieldsAttachments:Gr,setAssetTypeFieldsAttachment:DA,setAssetTypeFieldsAttachments:CA,updateAssetTypeFieldsAttachment:kA,updateAssetTypeFieldsAttachments:Lr,deleteAssetTypeFieldsAttachment:BA,deleteAssetTypeFieldsAttachments:Nr}=ia.actions,Hr=t=>t.assetTypeFieldsAttachmentReducer.instances,Wr=d.createSelector([Hr],t=>Object.values(t)),$A=f(d.createSelector([Wr,(t,e)=>e],(t,e)=>g(t.filter(s=>s.fields_revision===e)))),GA=t=>e=>e.assetTypeFieldsAttachmentReducer.instances[t],Kr=ia.reducer,ae=I(t=>t.uuid),Yr=ae.getInitialState({}),ca=d.createSlice({name:"assetTypeFields",initialState:Yr,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Yr)),reducers:{initializeAssetTypeFields:ae.initialize,addAssetTypeFields:ae.addOne,addAssetTypeFieldsMany:ae.addMany,setAssetTypeFields:ae.setOne,setAssetTypeFieldsMany:ae.setMany,updateAssetTypeFields:ae.updateOne,updateAssetTypeFieldsMany:ae.updateMany,deleteAssetTypeFields:ae.deleteOne,deleteAssetTypeFieldsMany:ae.deleteMany}}),{initializeAssetTypeFields:Jr,addAssetTypeFields:Zr,addAssetTypeFieldsMany:LA,setAssetTypeFields:NA,setAssetTypeFieldsMany:HA,updateAssetTypeFields:Xr,updateAssetTypeFieldsMany:WA,deleteAssetTypeFields:Qr,deleteAssetTypeFieldsMany:KA}=ca.actions,xr=t=>t.assetTypeFieldsReducer.instances,Ft=d.createSelector([xr],t=>Object.values(t)),YA=f(d.createSelector([Ft,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset_type===e)))),JA=f(d.createSelector([Ft,(t,e)=>e],(t,e)=>t.filter(s=>s.asset_type===e).sort((s,i)=>s.submitted_at>i.submitted_at?-1:1)[0])),ZA=t=>e=>e.assetTypeFieldsReducer.instances[t],ed=ca.reducer,ie=I(t=>t.uuid),td=ie.getInitialState({}),na=d.createSlice({name:"assetTypeFieldValuesAttachments",initialState:td,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,td)),reducers:{initializeAssetTypeFieldValuesAttachments:ie.initialize,addAssetTypeFieldValuesAttachment:ie.addOne,addAssetTypeFieldValuesAttachments:ie.addMany,setAssetTypeFieldValuesAttachment:ie.setOne,setAssetTypeFieldValuesAttachments:ie.setMany,updateAssetTypeFieldValuesAttachment:ie.updateOne,updateAssetTypeFieldValuesAttachments:ie.updateMany,deleteAssetTypeFieldValuesAttachment:ie.deleteOne,deleteAssetTypeFieldValuesAttachments:ie.deleteMany}}),{initializeAssetTypeFieldValuesAttachments:sd,addAssetTypeFieldValuesAttachment:XA,addAssetTypeFieldValuesAttachments:Tt,setAssetTypeFieldValuesAttachment:QA,setAssetTypeFieldValuesAttachments:xA,updateAssetTypeFieldValuesAttachment:ey,updateAssetTypeFieldValuesAttachments:ad,deleteAssetTypeFieldValuesAttachment:ty,deleteAssetTypeFieldValuesAttachments:It}=na.actions,ra=t=>t.assetTypeFieldValuesAttachmentReducer.instances,id=d.createSelector([ra],t=>Object.values(t)),sy=t=>e=>e.assetTypeFieldValuesAttachmentReducer.instances[t],cd=f(d.createSelector([ra,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),nd=f(d.createSelector([id,(t,e)=>e],(t,e)=>g(t.filter(s=>s.field_values===e)))),rd=na.reducer,ce=I(t=>t.uuid),dd=ce.getInitialState({}),da=d.createSlice({name:"assetTypeFieldValues",initialState:dd,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,dd)),reducers:{initializeAssetTypeFieldValues:ce.initialize,addAssetTypeFieldValues:ce.addOne,addAssetTypeFieldValuesMany:ce.addMany,setAssetTypeFieldValues:ce.setOne,setAssetTypeFieldValuesMany:ce.setMany,updateAssetTypeFieldValues:ce.updateOne,updateAssetTypeFieldValuesMany:ce.updateMany,deleteAssetTypeFieldValues:ce.deleteOne,deleteAssetTypeFieldValuesMany:ce.deleteMany}}),{initializeAssetTypeFieldValues:ud,addAssetTypeFieldValues:ua,addAssetTypeFieldValuesMany:od,setAssetTypeFieldValues:ay,setAssetTypeFieldValuesMany:iy,updateAssetTypeFieldValues:tt,updateAssetTypeFieldValuesMany:ld,deleteAssetTypeFieldValues:oa,deleteAssetTypeFieldValuesMany:hd}=da.actions,md=t=>t.assetTypeFieldValuesReducer.instances,la=d.createSelector([md],t=>Object.values(t)),cy=f(d.createSelector([la,(t,e)=>e],(t,e)=>g(t.filter(s=>s.asset===e)))),ny=f(d.createSelector([Ft,la,(t,e)=>e],(t,e,s)=>{const i=new Set(t.filter(c=>c.asset_type===s).map(c=>c.uuid));return g(e.filter(c=>i.has(c.fields_revision)))})),ha=t=>e=>e.assetTypeFieldValuesReducer.instances[t],pd=da.reducer,ne=I(t=>t.uuid),Ad=ne.getInitialState({}),ma=d.createSlice({name:"assetTypes",initialState:Ad,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Ad)),reducers:{initializeAssetTypes:ne.initialize,setAssetType:ne.setOne,setAssetTypes:ne.setMany,addAssetType:ne.addOne,addAssetTypes:ne.addMany,updateAssetType:ne.updateOne,updateAssetTypes:ne.updateMany,deleteAssetType:ne.deleteOne,deleteAssetTypes:ne.deleteMany}}),{initializeAssetTypes:yd,setAssetType:ry,setAssetTypes:dy,addAssetType:pa,addAssetTypes:uy,updateAssetType:st,updateAssetTypes:oy,deleteAssetType:Aa,deleteAssetTypes:ly}=ma.actions,ya=t=>t.assetTypeReducer.instances,fd=d.createSelector([ya],t=>Object.values(t)),fa=t=>e=>e.assetTypeReducer.instances[t],hy=f(d.createSelector([ya,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectAssetTypesByIds: No assetType exists with the id",i)}return g(s)})),my=f(d.createSelector([fd,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Sd=ma.reducer,gd={accessToken:"",refreshToken:"",isLoggedIn:!1},Ot=d.createSlice({name:"auth",initialState:gd,extraReducers:t=>t.addCase(F,e=>Object.assign(e,gd)),reducers:{setTokens:(t,e)=>{t.accessToken=e.payload.accessToken,t.refreshToken=e.payload.refreshToken},clearTokens:t=>{t.accessToken="",t.refreshToken=""},setLoggedIn:(t,e)=>{e.payload||Ot.caseReducers.clearTokens(t),t.isLoggedIn=e.payload}}}),{setTokens:py,clearTokens:Ay,setLoggedIn:bd}=Ot.actions,yy=t=>t.authReducer.accessToken,fy=t=>t.authReducer.isLoggedIn,Pd=Ot.reducer,re=I(t=>t.uuid),Fd=re.getInitialState({}),Sa=d.createSlice({name:"categories",initialState:Fd,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Fd)),reducers:{initializeCategories:re.initialize,addCategory:re.addOne,addCategories:re.addMany,setCategory:re.setOne,setCategories:re.setMany,updateCategory:re.updateOne,updateCategories:re.updateMany,deleteCategory:re.deleteOne,deleteCategories:re.deleteMany}}),{initializeCategories:Td,addCategory:ga,addCategories:Sy,setCategory:gy,setCategories:by,updateCategory:Id,updateCategories:Py,deleteCategory:Od,deleteCategories:Fy}=Sa.actions,ba=t=>t.categoryReducer.instances,_d=d.createSelector([ba],t=>Object.values(t)),Pa=t=>e=>e.categoryReducer.instances[t],Ty=f(d.createSelector([ba,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectCategoryByIds: No category exists with the id",i)}return g(s)})),Iy=f(d.createSelector([_d,(t,e)=>e],(t,e)=>g(t.filter(s=>s.project===e)))),Rd=Sa.reducer,de=I(t=>t.uuid),vd=de.getInitialState({}),Fa=d.createSlice({name:"documentAttachments",initialState:vd,extraReducers:t=>t.addCase(F,e=>Object.assign(e,vd)),reducers:{initializeDocumentAttachments:de.initialize,addDocumentAttachment:de.addOne,addDocumentAttachments:de.addMany,setDocumentAttachment:de.setOne,setDocumentAttachments:de.setMany,updateDocumentAttachment:de.updateOne,updateDocumentAttachments:de.updateMany,deleteDocumentAttachment:de.deleteOne,deleteDocumentAttachments:de.deleteMany}}),{initializeDocumentAttachments:wd,addDocumentAttachment:Oy,addDocumentAttachments:Md,setDocumentAttachment:Ed,setDocumentAttachments:_y,updateDocumentAttachment:Ry,updateDocumentAttachments:jd,deleteDocumentAttachment:qd,deleteDocumentAttachments:Vd}=Fa.actions,zd=t=>t.documentAttachmentReducer.instances,Ud=d.createSelector([zd],t=>Object.values(t)),Dd=t=>e=>e.documentAttachmentReducer.instances[t],vy=f(d.createSelector([Ud,(t,e)=>e],(t,e)=>g(t.filter(({document:s})=>e===s)))),Cd=Fa.reducer,kd={documents:{}},Ta=d.createSlice({name:"documents",initialState:kd,extraReducers:t=>t.addCase(F,e=>{Object.assign(e,kd)}),reducers:{setDocuments:(t,e)=>{if(e.payload.filter(Ic).length!==e.payload.length)throw new Error("Tried to use setIssues reducer with duplicate ID's");t.documents=Tc(e.payload)},addDocuments:(t,e)=>{for(const s of e.payload)if(s.uuid in t.documents)throw new Error(`attempting to add a document with uuid ${s.uuid} which already exists in state.documents.`);for(const s of e.payload){if(s.parent_document&&t.documents[s.parent_document]){const i=t.documents[s.parent_document];t.documents[s.parent_document]={...i,children_documents:[...i.children_documents,s.uuid]}}t.documents[s.uuid]=s}},updateDocuments:(t,e)=>{for(const s of e.payload)if(!(s.uuid in t.documents))throw new Error(`attempting to update a document with uuid ${s.uuid} which doesn't exists in state.documents.`);for(const s of e.payload){const i=t.documents[s.uuid];if(s.organization!==void 0&&s.organization!==i.organization)throw new Error("organization cannot be updated");if(s.project!==void 0&&s.project!==i.project)throw new Error("project cannot be updated");t.documents[s.uuid]={...i,...s}}},removeDocuments:(t,e)=>{for(const s of e.payload)if(!(s in t.documents))throw new Error(`attempting to delete a document with uuid ${s} which doesn't exists in state.documents.`);for(const s of e.payload){const i=t.documents[s];if(i.parent_document&&t.documents[i.parent_document]){const c=t.documents[i.parent_document];t.documents[i.parent_document]={...c,children_documents:c.children_documents.filter(n=>n!==i.uuid)}}delete t.documents[s]}}}}),{setDocuments:Bd,addDocuments:$d,updateDocuments:Ne,removeDocuments:Ia}=Ta.actions,_t=t=>t.documentsReducer.documents,Oa=d.createSelector([_t],t=>Object.values(t)),Gd=t=>e=>e.documentsReducer.documents[t],wy=f(d.createSelector([_t,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectDocumentByIds: No document exists with the id",i)}return g(s)})),My=f(d.createSelector([Oa,(t,e)=>e],(t,e)=>t.filter(s=>s.project===e))),Ey=f(d.createSelector([Oa,(t,e)=>e],(t,e)=>t.filter(s=>s.organization===e))),Ld=Ta.reducer,ue=I(t=>t.uuid),Nd=ue.getInitialState({}),_a=d.createSlice({name:"emailDomains",initialState:Nd,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Nd)),reducers:{initializeEmailDomains:ue.initialize,addEmailDomain:ue.addOne,addEmailDomains:ue.addMany,setEmailDomain:ue.setOne,setEmailDomains:ue.setMany,updateEmailDomain:ue.updateOne,updateEmailDomains:ue.updateMany,deleteEmailDomain:ue.deleteOne,deleteEmailDomains:ue.deleteMany}}),{initializeEmailDomains:Hd,addEmailDomain:Wd,addEmailDomains:jy,setEmailDomain:qy,setEmailDomains:Vy,updateEmailDomain:zy,updateEmailDomains:Uy,deleteEmailDomain:Kd,deleteEmailDomains:Dy}=_a.actions,Yd=t=>t.emailDomainsReducer.instances,Jd=d.createSelector([Yd],t=>Object.values(t)),Cy=f(d.createSelector([Jd,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Zd=_a.reducer,Xd={s3Urls:{}},Qd=1e3*60*60,ky=Qd*24*7,Ra=d.createSlice({name:"file",initialState:Xd,extraReducers:t=>t.addCase(F,e=>Object.assign(e,Xd)),reducers:{setUploadUrl:(t,e)=>{const{url:s,fields:i,sha1:c}=e.payload,n=new Date,r=new Date(n.getTime()+ky);t.s3Urls[c]={url:s,fields:i,exp:r.getTime()}}}}),{setUploadUrl:xd}=Ra.actions,eu=t=>e=>{const s=e.fileReducer.s3Urls[t];if(!s)return;const i=new Date().getTime();if(!((s.exp??i)-i<Qd))return s},tu=Ra.reducer,oe=I(t=>t.uuid),su=oe.getInitialState({}),va=d.createSlice({name:"formRevisionAttachments",initialState:su,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,su)),reducers:{initializeFormRevisionAttachments:oe.initialize,addFormRevisionAttachment:oe.addOne,addFormRevisionAttachments:oe.addMany,setFormRevisionAttachment:oe.setOne,setFormRevisionAttachments:oe.setMany,updateFormRevisionAttachment:oe.updateOne,updateFormRevisionAttachments:oe.updateMany,deleteFormRevisionAttachment:oe.deleteOne,deleteFormRevisionAttachments:oe.deleteMany}}),{initializeFormRevisionAttachments:au,addFormRevisionAttachment:By,addFormRevisionAttachments:iu,setFormRevisionAttachment:$y,setFormRevisionAttachments:Gy,updateFormRevisionAttachment:Ly,updateFormRevisionAttachments:cu,deleteFormRevisionAttachment:Ny,deleteFormRevisionAttachments:nu}=va.actions,ru=t=>t.formRevisionAttachmentReducer.instances,Hy=f(d.createSelector([ru,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.form_revision===e)))),du=va.reducer,Wy=(t,e)=>{const s=t.revision,i=e.revision;return s===void 0&&i===void 0?t.submitted_at<e.submitted_at?-1:1:s===void 0?1:i===void 0||s<i?-1:1},le=I(t=>t.uuid),uu=le.getInitialState({}),wa=d.createSlice({name:"formRevisions",initialState:uu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,uu)),reducers:{initializeFormRevisions:le.initialize,addFormRevision:le.addOne,addFormRevisions:le.addMany,setFormRevision:le.setOne,setFormRevisions:le.setMany,updateFormRevision:le.updateOne,updateFormRevisions:le.updateMany,deleteFormRevision:le.deleteOne,deleteFormRevisions:le.deleteMany}}),{initializeFormRevisions:ou,addFormRevision:Ma,addFormRevisions:lu,setFormRevision:hu,setFormRevisions:Ky,updateFormRevision:Yy,updateFormRevisions:Jy,deleteFormRevision:Ea,deleteFormRevisions:mu}=wa.actions,Rt=t=>t.formRevisionReducer.instances,pu=d.createSelector([Rt],t=>Object.values(t)),Zy=t=>e=>e.formRevisionReducer.instances[t],Xy=f(d.createSelector([Rt,(t,e)=>e],(t,e)=>{const s=Object.values(t).filter(n=>n.form===e);if(s.length===0)return;const c=s.sort(Wy)[s.length-1];return t[c.uuid]})),Au=f(d.createSelector([pu,(t,e)=>e],(t,e)=>g(t.filter(s=>s.form===e)))),yu=wa.reducer,he=I(t=>t.uuid),fu=he.getInitialState({}),ja=d.createSlice({name:"forms",initialState:fu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,fu)),reducers:{initializeForms:he.initialize,addForm:he.addOne,addForms:he.addMany,setForm:he.setOne,setForms:he.setMany,updateForm:he.updateOne,updateForms:he.updateMany,deleteForm:he.deleteOne,deleteForms:he.deleteMany}}),{initializeForms:Su,addForm:qa,addForms:Qy,setForm:xy,setForms:ef,updateForm:tf,updateForms:sf,deleteForm:Va,deleteForms:af}=ja.actions,gu=ja.reducer,bu=t=>t.formReducer.instances,Pu=d.createSelector([bu],t=>Object.values(t)),Fu=t=>e=>e.formReducer.instances[t],cf=f(d.createSelector([Pu,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),me=I(t=>t.uuid),Tu=me.getInitialState({}),za=d.createSlice({name:"formSubmissionAttachments",initialState:Tu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Tu)),reducers:{initializeFormSubmissionAttachments:me.initialize,addFormSubmissionAttachment:me.addOne,addFormSubmissionAttachments:me.addMany,setFormSubmissionAttachment:me.setOne,setFormSubmissionAttachments:me.setMany,updateFormSubmissionAttachment:me.updateOne,updateFormSubmissionAttachments:me.updateMany,deleteFormSubmissionAttachment:me.deleteOne,deleteFormSubmissionAttachments:me.deleteMany}}),{initializeFormSubmissionAttachments:Iu,addFormSubmissionAttachment:nf,addFormSubmissionAttachments:vt,setFormSubmissionAttachment:rf,setFormSubmissionAttachments:df,updateFormSubmissionAttachment:uf,updateFormSubmissionAttachments:Ou,deleteFormSubmissionAttachment:of,deleteFormSubmissionAttachments:wt}=za.actions,Ua=t=>t.formSubmissionAttachmentReducer.instances,_u=f(d.createSelector([Ua,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),Ru=f(d.createSelector([Ua,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.form_submission===e)))),vu=za.reducer,pe=I(t=>t.uuid),wu=pe.getInitialState({}),Da=d.createSlice({name:"formSubmissions",initialState:wu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,wu)),reducers:{initializeFormSubmissions:pe.initialize,setFormSubmission:pe.setOne,setFormSubmissions:pe.setMany,addFormSubmission:pe.addOne,addFormSubmissions:pe.addMany,updateFormSubmission:pe.updateOne,updateFormSubmissions:pe.updateMany,deleteFormSubmission:pe.deleteOne,deleteFormSubmissions:pe.deleteMany}}),{initializeFormSubmissions:Mu,setFormSubmission:Mt,setFormSubmissions:lf,addFormSubmission:Ca,addFormSubmissions:Et,updateFormSubmission:Eu,updateFormSubmissions:hf,deleteFormSubmission:ka,deleteFormSubmissions:jt}=Da.actions,Ba=t=>t.formSubmissionReducer.instances,$a=d.createSelector([Ba],t=>Object.values(t)),Ga=t=>e=>e.formSubmissionReducer.instances[t],ju=f(d.createSelector([Ba,Rt,(t,e)=>e],(t,e,s)=>{const i=new Set;for(const c of Object.values(e))c.form===s&&i.add(c.uuid);return Object.values(t).filter(c=>i.has(c.form_revision))})),qu=f(d.createSelector([$a,(t,e)=>e],(t,e)=>Object.values(t).filter(s=>s.issue===e))),Vu=f(d.createSelector([$a,(t,e)=>e],(t,e)=>t.filter(s=>s.asset===e))),zu=Da.reducer,Ae=I(t=>t.uuid),Uu=Ae.getInitialState({}),La=d.createSlice({name:"geoImages",initialState:Uu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Uu)),reducers:{initializeGeoImages:Ae.initialize,setGeoImage:Ae.setOne,setGeoImages:Ae.setMany,addGeoImage:Ae.addOne,addGeoImages:Ae.addMany,updateGeoImage:Ae.updateOne,updateGeoImages:Ae.updateMany,deleteGeoImage:Ae.deleteOne,deleteGeoImages:Ae.deleteMany}}),{initializeGeoImages:Du,setGeoImage:at,setGeoImages:Cu,addGeoImage:ku,addGeoImages:Bu,updateGeoImage:$u,updateGeoImages:mf,deleteGeoImage:Na,deleteGeoImages:Gu}=La.actions,Lu=t=>t.geoImageReducer.instances,Nu=d.createSelector([Lu],t=>Object.values(t)),Ha=t=>e=>e.geoImageReducer.instances[t],pf=f(d.createSelector([Nu,(t,e)=>e],(t,e)=>g(t.filter(s=>s.project===e)))),Hu=La.reducer,ye=I(t=>t.uuid),Wu=ye.getInitialState({}),Wa=d.createSlice({name:"issueAssociations",initialState:Wu,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Wu)),reducers:{initializeIssueAssociations:ye.initialize,addIssueAssociation:ye.addOne,addIssueAssociations:ye.addMany,setIssueAssociation:ye.setOne,setIssueAssociations:ye.setMany,updateIssueAssociation:ye.updateOne,updateIssueAssociations:ye.updateMany,deleteIssueAssociation:ye.deleteOne,deleteIssueAssociations:ye.deleteMany}}),{initializeIssueAssociations:Ku,setIssueAssociations:Af,setIssueAssociation:yf,updateIssueAssociation:Yu,updateIssueAssociations:ff,addIssueAssociation:Ka,addIssueAssociations:Ya,deleteIssueAssociation:Ja,deleteIssueAssociations:Za}=Wa.actions,it=t=>t.issueAssociationReducer.instances,Sf=d.createSelector([it],t=>Object.values(t)),Ju=t=>e=>e.issueAssociationReducer.instances[t],Zu=f(d.createSelector([it,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.associated_issue===e)))),Xu=f(d.createSelector([it,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.issue===e)))),Qu=f(d.createSelector([it,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.asset===e)))),xu=Wa.reducer,fe=I(t=>t.uuid),eo=fe.getInitialState({}),Xa=d.createSlice({name:"issueAttachments",initialState:eo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,eo)),reducers:{initializeIssueAttachments:fe.initialize,addIssueAttachment:fe.addOne,addIssueAttachments:fe.addMany,setIssueAttachment:fe.setOne,setIssueAttachments:fe.setMany,updateIssueAttachment:fe.updateOne,updateIssueAttachments:fe.updateMany,deleteIssueAttachment:fe.deleteOne,deleteIssueAttachments:fe.deleteMany}}),{initializeIssueAttachments:Qa,addIssueAttachment:gf,addIssueAttachments:xa,setIssueAttachment:to,setIssueAttachments:bf,updateIssueAttachment:Pf,updateIssueAttachments:so,deleteIssueAttachment:ao,deleteIssueAttachments:ei}=Xa.actions,io=t=>t.issueAttachmentReducer.instances,co=d.createSelector([io],t=>Object.values(t)),no=f(d.createSelector([co,(t,e)=>e],(t,e)=>g(t.filter(({issue:s})=>e===s)))),ro=t=>e=>e.issueAttachmentReducer.instances[t],uo=Xa.reducer,Se=I(t=>t.uuid),oo=Se.getInitialState({}),ti=d.createSlice({name:"issueCommentAttachments",initialState:oo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,oo)),reducers:{initializeIssueCommentAttachments:Se.initialize,addIssueCommentAttachment:Se.addOne,addIssueCommentAttachments:Se.addMany,setIssueCommentAttachment:Se.setOne,setIssueCommentAttachments:Se.setMany,updateIssueCommentAttachment:Se.updateOne,updateIssueCommentAttachments:Se.updateMany,deleteIssueCommentAttachment:Se.deleteOne,deleteIssueCommentAttachments:Se.deleteMany}}),{initializeIssueCommentAttachments:si,addIssueCommentAttachment:Ff,addIssueCommentAttachments:lo,setIssueCommentAttachment:ho,setIssueCommentAttachments:Tf,updateIssueCommentAttachment:If,updateIssueCommentAttachments:mo,deleteIssueCommentAttachment:po,deleteIssueCommentAttachments:Ao}=ti.actions,yo=t=>t.issueCommentAttachmentReducer.instances,fo=d.createSelector([yo],t=>Object.values(t)),So=t=>e=>e.issueCommentAttachmentReducer.instances[t],Of=f(d.createSelector([fo,(t,e)=>e],(t,e)=>g(t.filter(({issue_comment:s})=>e===s)))),go=ti.reducer,ge=I(t=>t.uuid),bo=ge.getInitialState({}),ai=d.createSlice({name:"issueComments",initialState:bo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,bo)),reducers:{initializeIssueComments:ge.initialize,addIssueComment:ge.addOne,addIssueComments:ge.addMany,setIssueComment:ge.setOne,setIssueComments:ge.setMany,updateIssueComment:ge.updateOne,updateIssueComments:ge.updateMany,deleteIssueComment:ge.deleteOne,deleteIssueComments:ge.deleteMany}}),{initializeIssueComments:_f,addIssueComment:ii,addIssueComments:Rf,setIssueComment:ci,setIssueComments:Po,updateIssueComment:vf,updateIssueComments:wf,deleteIssueComment:ni,deleteIssueComments:Mf}=ai.actions,Fo=t=>t.issueCommentReducer.instances,ri=t=>e=>e.issueCommentReducer.instances[t],Ef=f(d.createSelector([Fo,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.issue===e)))),To=ai.reducer,be=I(t=>t.uuid),Io=be.getInitialState({}),di=d.createSlice({name:"issues",initialState:Io,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Io)),reducers:{initializeIssues:be.initialize,addIssue:be.addOne,addIssues:be.addMany,setIssue:be.setOne,setIssues:be.setMany,updateIssue:be.updateOne,updateIssues:be.updateMany,deleteIssue:be.deleteOne,deleteIssues:be.deleteMany}}),{initializeIssues:Oo,addIssue:ui,addIssues:_o,setIssue:jf,setIssues:qf,updateIssue:qt,updateIssues:Vf,deleteIssue:oi,deleteIssues:Ro}=di.actions,li=t=>t.issueReducer.instances,zf=d.createSelector([li],t=>Object.values(t)),hi=t=>e=>e.issueReducer.instances[t],Uf=f(d.createSelector([li,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectIssuesByIds: No issue exists with the id",i)}return g(s)})),vo=di.reducer,Pe=I(t=>t.uuid),wo=Pe.getInitialState({}),mi=d.createSlice({name:"issueTypeAttachments",initialState:wo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,wo)),reducers:{initializeIssueTypeAttachments:Pe.initialize,addIssueTypeAttachment:Pe.addOne,addIssueTypeAttachments:Pe.addMany,setIssueTypeAttachment:Pe.setOne,setIssueTypeAttachments:Pe.setMany,updateIssueTypeAttachment:Pe.updateOne,updateIssueTypeAttachments:Pe.updateMany,deleteIssueTypeAttachment:Pe.deleteOne,deleteIssueTypeAttachments:Pe.deleteMany}}),{initializeIssueTypeAttachments:pi,addIssueTypeAttachment:Df,addIssueTypeAttachments:Mo,setIssueTypeAttachment:Eo,setIssueTypeAttachments:Cf,updateIssueTypeAttachment:kf,updateIssueTypeAttachments:jo,deleteIssueTypeAttachment:qo,deleteIssueTypeAttachments:Vo}=mi.actions,zo=t=>t.issueTypeAttachmentReducer.instances,Uo=d.createSelector([zo],t=>Object.values(t)),Do=t=>e=>e.issueTypeAttachmentReducer.instances[t],Bf=f(d.createSelector([Uo,(t,e)=>e],(t,e)=>g(t.filter(({issue_type:s})=>e===s)))),Co=mi.reducer,Fe=I(t=>t.uuid),ko=Fe.getInitialState({}),Ai=d.createSlice({name:"issueTypeFieldsAttachments",initialState:ko,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,ko)),reducers:{initializeIssueTypeFieldsAttachments:Fe.initialize,addIssueTypeFieldsAttachment:Fe.addOne,addIssueTypeFieldsAttachments:Fe.addMany,setIssueTypeFieldsAttachment:Fe.setOne,setIssueTypeFieldsAttachments:Fe.setMany,updateIssueTypeFieldsAttachment:Fe.updateOne,updateIssueTypeFieldsAttachments:Fe.updateMany,deleteIssueTypeFieldsAttachment:Fe.deleteOne,deleteIssueTypeFieldsAttachments:Fe.deleteMany}}),{initializeIssueTypeFieldsAttachments:Bo,addIssueTypeFieldsAttachment:$f,addIssueTypeFieldsAttachments:$o,setIssueTypeFieldsAttachment:Gf,setIssueTypeFieldsAttachments:Lf,updateIssueTypeFieldsAttachment:Nf,updateIssueTypeFieldsAttachments:Go,deleteIssueTypeFieldsAttachment:Hf,deleteIssueTypeFieldsAttachments:Lo}=Ai.actions,No=t=>t.issueTypeFieldsAttachmentReducer.instances,Ho=d.createSelector([No],t=>Object.values(t)),Wf=f(d.createSelector([Ho,(t,e)=>e],(t,e)=>g(t.filter(s=>s.fields_revision===e)))),Kf=t=>e=>e.issueTypeFieldsAttachmentReducer.instances[t],Wo=Ai.reducer,Te=I(t=>t.uuid),Ko=Te.getInitialState({}),yi=d.createSlice({name:"issueTypeFieldValues",initialState:Ko,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Ko)),reducers:{initializeIssueTypeFieldValues:Te.initialize,addIssueTypeFieldValues:Te.addOne,addIssueTypeFieldValuesMany:Te.addMany,setIssueTypeFieldValues:Te.setOne,setIssueTypeFieldValuesMany:Te.setMany,updateIssueTypeFieldValues:Te.updateOne,updateIssueTypeFieldValuesMany:Te.updateMany,deleteIssueTypeFieldValues:Te.deleteOne,deleteIssueTypeFieldValuesMany:Te.deleteMany}}),{initializeIssueTypeFieldValues:Yo,addIssueTypeFieldValues:fi,addIssueTypeFieldValuesMany:Yf,setIssueTypeFieldValues:Jf,setIssueTypeFieldValuesMany:Zf,updateIssueTypeFieldValues:ct,updateIssueTypeFieldValuesMany:Xf,deleteIssueTypeFieldValues:Si,deleteIssueTypeFieldValuesMany:Qf}=yi.actions,Jo=t=>t.issueTypeFieldValuesReducer.instances,gi=d.createSelector([Jo],t=>Object.values(t)),xf=f(d.createSelector([gi,(t,e)=>e],(t,e)=>g(t.filter(s=>s.issue===e)))),bi=t=>e=>e.issueTypeFieldValuesReducer.instances[t],Zo=yi.reducer,Ie=I(t=>t.uuid),Xo=Ie.getInitialState({}),Pi=d.createSlice({name:"issueTypeFields",initialState:Xo,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Xo)),reducers:{initializeIssueTypeFields:Ie.initialize,addIssueTypeFields:Ie.addOne,addIssueTypeFieldsMany:Ie.addMany,setIssueTypeFields:Ie.setOne,setIssueTypeFieldsMany:Ie.setMany,updateIssueTypeFields:Ie.updateOne,updateIssueTypeFieldsMany:Ie.updateMany,deleteIssueTypeFields:Ie.deleteOne,deleteIssueTypeFieldsMany:Ie.deleteMany}}),{initializeIssueTypeFields:Qo,addIssueTypeFields:xo,addIssueTypeFieldsMany:eS,setIssueTypeFields:tS,setIssueTypeFieldsMany:sS,updateIssueTypeFields:el,updateIssueTypeFieldsMany:aS,deleteIssueTypeFields:tl,deleteIssueTypeFieldsMany:iS}=Pi.actions,sl=t=>t.issueTypeFieldsReducer.instances,Vt=d.createSelector([sl],t=>Object.values(t)),cS=f(d.createSelector([Vt,(t,e)=>e],(t,e)=>g(t.filter(s=>s.issue_type===e)))),nS=f(d.createSelector([Vt,(t,e)=>e],(t,e)=>t.filter(s=>s.issue_type===e).sort((s,i)=>s.submitted_at>i.submitted_at?-1:1)[0])),rS=f(d.createSelector([Vt,gi,(t,e)=>e],(t,e,s)=>{const i=new Set(t.filter(c=>c.issue_type===s).map(c=>c.uuid));return g(e.filter(c=>i.has(c.fields_revision)))})),dS=t=>e=>e.issueTypeFieldsReducer.instances[t],al=Pi.reducer,Oe=I(t=>t.uuid),il=Oe.getInitialState({}),Fi=d.createSlice({name:"issueTypeFieldValuesAttachments",initialState:il,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,il)),reducers:{initializeIssueTypeFieldValuesAttachments:Oe.initialize,addIssueTypeFieldValuesAttachment:Oe.addOne,addIssueTypeFieldValuesAttachments:Oe.addMany,setIssueTypeFieldValuesAttachment:Oe.setOne,setIssueTypeFieldValuesAttachments:Oe.setMany,updateIssueTypeFieldValuesAttachment:Oe.updateOne,updateIssueTypeFieldValuesAttachments:Oe.updateMany,deleteIssueTypeFieldValuesAttachment:Oe.deleteOne,deleteIssueTypeFieldValuesAttachments:Oe.deleteMany}}),{initializeIssueTypeFieldValuesAttachments:cl,addIssueTypeFieldValuesAttachment:uS,addIssueTypeFieldValuesAttachments:zt,setIssueTypeFieldValuesAttachment:oS,setIssueTypeFieldValuesAttachments:lS,updateIssueTypeFieldValuesAttachment:hS,updateIssueTypeFieldValuesAttachments:nl,deleteIssueTypeFieldValuesAttachment:mS,deleteIssueTypeFieldValuesAttachments:Ut}=Fi.actions,Ti=t=>t.issueTypeFieldValuesAttachmentReducer.instances,rl=d.createSelector([Ti],t=>Object.values(t)),pS=t=>e=>e.issueTypeFieldValuesAttachmentReducer.instances[t],dl=f(d.createSelector([Ti,(t,e)=>e],(t,e)=>{const s=new Set(e);return g(Object.values(t).filter(i=>s.has(i.uuid)))})),ul=f(d.createSelector([rl,(t,e)=>e],(t,e)=>g(t.filter(s=>s.field_values===e)))),ol=Fi.reducer,D=I(t=>t.uuid),ll=D.getInitialState({}),Ii=d.createSlice({name:"issueTypes",initialState:ll,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,ll)),reducers:{initializeIssueTypes:D.initialize,addIssueType:D.addOne,addIssueTypes:D.addMany,setIssueType:D.setOne,setIssueTypes:D.setMany,updateIssueType:D.updateOne,updateIssueTypes:D.updateMany,deleteIssueType:D.deleteOne,deleteIssueTypes:D.deleteMany,removeIssueType:D.deleteOne}}),{initializeIssueTypes:hl,addIssueType:ml,addIssueTypes:AS,setIssueType:nt,setIssueTypes:yS,updateIssueType:pl,updateIssueTypes:fS,deleteIssueType:SS,deleteIssueTypes:gS,removeIssueType:Oi}=Ii.actions,Al=t=>t.issueTypeReducer.instances,yl=d.createSelector(Al,t=>Object.values(t)),_i=t=>e=>e.issueTypeReducer.instances[t],bS=t=>e=>{const s=[];for(const i of t){const c=e.issueTypeReducer.instances[i];c?s.push(c):console.warn("selectIssueTypesByIds: No issue type exists with the id",i)}return s},PS=f(d.createSelector([yl,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Ri=f(d.createSelector([t=>t.issueReducer.instances,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.issue_type===e)))),FS=t=>e=>Ri(t)(e).length,fl=Ii.reducer,_e=I(t=>t.uuid),Sl=_e.getInitialState({}),vi=d.createSlice({name:"issueUpdates",initialState:Sl,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,Sl)),reducers:{initializeIssueUpdates:_e.initialize,addIssueUpdate:_e.addOne,addIssueUpdates:_e.addMany,setIssueUpdate:_e.setOne,setIssueUpdates:_e.setMany,updateIssueUpdate:_e.updateOne,updateIssueUpdates:_e.updateMany,deleteIssueUpdate:_e.deleteOne,deleteIssueUpdates:_e.deleteMany}}),{initializeIssueUpdates:gl,addIssueUpdate:bl,addIssueUpdates:Pl,setIssueUpdate:TS,setIssueUpdates:IS,updateIssueUpdate:OS,updateIssueUpdates:_S,deleteIssueUpdate:Fl,deleteIssueUpdates:Tl}=vi.actions,Il=t=>t.issueUpdateReducer.instances,Ol=f(d.createSelector([Il,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.issue===e)))),_l=vi.reducer,Re=I(t=>t.id),Rl=Re.getInitialState({currentUser:null}),wi=d.createSlice({name:"users",initialState:Rl,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Rl)),reducers:{initializeUsers:Re.initialize,setUsers:Re.setMany,setUser:Re.setOne,addUsers:Re.addMany,addUser:Re.addOne,updateUsers:Re.updateMany,updateUser:Re.updateOne,deleteUser:Re.deleteOne,deleteUsers:Re.deleteMany,setCurrentUser:(t,e)=>{t.currentUser=e.payload},setProfilePicture:(t,e)=>{if(!t.currentUser)return;t.currentUser.profile.file=e.payload.file??null,t.currentUser.profile.file_sha1=e.payload.file_sha1??null;const s=t.instances[t.currentUser.id];if(!s)throw new Error("Unable to find current user in users slice");s.profile.file=e.payload.file??null,s.profile.file_sha1=e.payload.file_sha1??null}}}),{initializeUsers:vl,setUsers:RS,setUser:vS,addUsers:wS,addUser:wl,updateUsers:MS,updateUser:ES,deleteUser:Ml,deleteUsers:jS,setCurrentUser:qS,setProfilePicture:VS}=wi.actions,El=wi.reducer,jl=t=>t.userReducer.currentUser,Dt=t=>t.userReducer.instances,Mi=d.createSelector([Dt],t=>Object.values(t)),ql=t=>e=>e.userReducer.instances[t],zS=f(d.createSelector([Dt,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectUsersByIds: No user exists with the uuid",i)}return g(s)})),ve=I(t=>t.uuid),Vl=ve.getInitialState({}),Ei=d.createSlice({name:"organizationAccess",initialState:Vl,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Vl)),reducers:{initializeOrganizationAccesses:ve.initialize,addOrganizationAccess:ve.addOne,addOrganizationAccesses:ve.addMany,setOrganizationAccess:ve.setOne,setOrganizationAccesses:ve.setMany,updateOrganizationAccess:ve.updateOne,updateOrganizationAccesses:ve.updateMany,deleteOrganizationAccess:ve.deleteOne,deleteOrganizationAccesses:ve.deleteMany}}),{initializeOrganizationAccesses:zl,addOrganizationAccess:Ul,addOrganizationAccesses:US,setOrganizationAccess:DS,setOrganizationAccesses:CS,updateOrganizationAccess:Ct,updateOrganizationAccesses:kS,deleteOrganizationAccess:Dl,deleteOrganizationAccesses:BS}=Ei.actions,Cl=Ei.reducer,ji=t=>t.organizationAccessReducer.instances,qi=t=>e=>e.organizationAccessReducer.instances[t],$S=d.createSelector([jl,ji],(t,e)=>Object.values(e).find(i=>i.user===(t==null?void 0:t.id))??null),kl=d.createSelector([ji],t=>{const e={};for(const s of Object.values(t))e[s.user]=s;return lt(e)}),GS=f(d.createSelector([Dt,kl,(t,e)=>e],(t,e,s)=>g(Object.values(t).filter(i=>{const c=e[i.id];return!!c&&c.organization===s})))),we=I(t=>t.uuid),Bl=we.getInitialState({}),Vi=d.createSlice({name:"organizations",initialState:Bl,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Bl)),reducers:{initializeOrganizations:we.initialize,setOrganizations:we.setMany,setOrganization:we.setOne,addOrganizations:we.addMany,addOrganization:we.addOne,updateOrganizations:we.updateMany,updateOrganization:we.updateOne,deleteOrganization:we.deleteOne,deleteOrganizations:we.deleteMany}}),{initializeOrganizations:$l,setOrganizations:LS,setOrganization:NS,addOrganizations:HS,addOrganization:Gl,updateOrganizations:WS,updateOrganization:Ll,deleteOrganization:KS,deleteOrganizations:YS}=Vi.actions,Nl=t=>t.organizationReducer.instances,JS=d.createSelector([Nl],t=>Object.values(t)),ZS=t=>e=>e.organizationReducer.instances[t],Hl=Vi.reducer,Wl=(t,e,s)=>{const i=t.uuid?t:{...t,uuid:Ge.v4()};return{payload:i,type:"",meta:{offline:{effect:{timestamp:new Date().toISOString(),request:i,BASE_URL:e,serviceName:s}}}}},Kl={deletedRequests:[],latestRetryTime:0},zi=d.createSlice({name:"outbox",initialState:Kl,extraReducers:t=>t.addCase(F,e=>Object.assign(e,Kl)),reducers:{enqueueRequest:{reducer:(t,e)=>t,prepare:t=>{console.debug("Preparing to enqueue request",t);const{BASE_URL:e,serviceName:s,...i}=t;return Wl(i,e,s)}},markForDeletion(t,e){t.deletedRequests.push(e.payload)},markAsDeleted(t,e){const s=t.deletedRequests.indexOf(e.payload);s!==-1&&t.deletedRequests.splice(s,1)},_setLatestRetryTime:(t,e)=>{t.latestRetryTime=e.payload}}}),XS=t=>t.outboxReducer.deletedRequests,QS=t=>t.outboxReducer.latestRetryTime,{enqueueRequest:Yl,markForDeletion:xS,markAsDeleted:Jl,_setLatestRetryTime:Zl}=zi.actions,Xl=zi.reducer,Me=I(t=>t.uuid),Ql=Me.getInitialState({}),Ui=d.createSlice({name:"projectAccess",initialState:Ql,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Ql)),reducers:{initializeProjectAccesses:Me.initialize,addProjectAccess:Me.addOne,addProjectAccesses:Me.addMany,setProjectAccess:Me.setOne,setProjectAccesses:Me.setMany,updateProjectAccess:Me.updateOne,updateProjectAccesses:Me.updateMany,deleteProjectAccess:Me.deleteOne,deleteProjectAccesses:Me.deleteMany}}),{initializeProjectAccesses:xl,addProjectAccess:Di,addProjectAccesses:eh,setProjectAccess:eg,setProjectAccesses:tg,updateProjectAccess:rt,updateProjectAccesses:sg,deleteProjectAccess:Ci,deleteProjectAccesses:th}=Ui.actions,sh=Ui.reducer,ki=t=>t.projectAccessReducer.instances,kt=d.createSelector(ki,t=>Object.values(t)),Bi=t=>e=>e.projectAccessReducer.instances[t],ah=f(d.createSelector([ki,(t,e)=>e],(t,e)=>g(Object.values(t).filter(s=>s.project===e)))),ag=f(d.createSelector([kt,(t,e)=>e],(t,e)=>{const s={};for(const i of t.filter(c=>c.project===e))s[i.user]=i;return s})),ig=f(d.createSelector([Mi,kt,(t,e)=>e],(t,e,s)=>{const i=new Set(e.filter(c=>c.project===s).map(c=>c.user));return g(t.filter(c=>i.has(c.id)))})),Ee=I(t=>t.uuid),ih=Ee.getInitialState({}),$i=d.createSlice({name:"projectAttachments",initialState:ih,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,ih)),reducers:{initializeProjectAttachments:Ee.initialize,addProjectAttachment:Ee.addOne,addProjectAttachments:Ee.addMany,setProjectAttachment:Ee.setOne,setProjectAttachments:Ee.setMany,updateProjectAttachment:Ee.updateOne,updateProjectAttachments:Ee.updateMany,deleteProjectAttachment:Ee.deleteOne,deleteProjectAttachments:Ee.deleteMany}}),{initializeProjectAttachments:ch,addProjectAttachment:cg,addProjectAttachments:nh,setProjectAttachment:rh,setProjectAttachments:dh,updateProjectAttachment:ng,updateProjectAttachments:uh,deleteProjectAttachment:oh,deleteProjectAttachments:Gi}=$i.actions,lh=t=>t.projectAttachmentReducer.instances,hh=d.createSelector([lh],t=>Object.values(t)),mh=t=>e=>e.projectAttachmentReducer.instances[t],ph=f(d.createSelector([hh,(t,e)=>e],(t,e)=>g(t.filter(({project:s})=>e===s)))),Ah=$i.reducer,je=I(t=>t.uuid),yh=je.getInitialState({activeProjectFileId:null,isImportingProjectFile:!1}),Li=d.createSlice({name:"projectFiles",initialState:yh,extraReducers:t=>t.addMatcher(d.isAnyOf(F,M,_),e=>Object.assign(e,yh)),reducers:{initializeProjectFiles:je.initialize,setProjectFile:je.setOne,setProjectFiles:je.setMany,addProjectFile:je.addOne,addProjectFiles:je.addMany,updateProjectFile:je.updateOne,updateProjectFiles:je.updateMany,deleteProjectFile:je.deleteOne,deleteProjectFiles:je.deleteMany,setIsImportingProjectFile:(t,e)=>{t.isImportingProjectFile=e.payload},saveActiveProjectFileBounds:(t,e)=>{const s=t.activeProjectFileId;if(!s)throw new Error("Tried to save bounds for active project file, but no active project file was set.");if(!t.instances[s])throw new Error(`Tried to save bounds for active project file, but project file with ID ${s}
2
2
  doesn't exist.`);t.instances[s].bounds=e.payload},setActiveProjectFileId:(t,e)=>{t.activeProjectFileId=e.payload},resetProjectFileObjectUrls:(t,...e)=>{for(const s in t.instances)delete t.instances[s].objectURL}}}),{initializeProjectFiles:fh,setProjectFile:rg,setProjectFiles:dg,addProjectFile:ug,addProjectFiles:Sh,updateProjectFile:Ni,updateProjectFiles:og,deleteProjectFile:gh,deleteProjectFiles:bh,setIsImportingProjectFile:Ph,setActiveProjectFileId:Fh,saveActiveProjectFileBounds:Th,resetProjectFileObjectUrls:lg}=Li.actions,Ih=t=>t.projectFileReducer.instances,Oh=d.createSelector([Ih],t=>g(Object.values(t).sort((e,s)=>e.z_index-s.z_index))),hg=t=>e=>e.projectFileReducer.instances[t],mg=t=>t.projectFileReducer.activeProjectFileId,pg=t=>t.projectFileReducer.isImportingProjectFile,_h=Li.reducer,qe=I(t=>t.uuid),Rh=qe.getInitialState({}),Hi=d.createSlice({name:"projects",initialState:Rh,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Rh)),reducers:{initializeProjects:qe.initialize,setProjects:qe.setMany,setProject:qe.setOne,addProjects:qe.addMany,addProject:qe.addOne,updateProjects:qe.updateMany,updateProject:qe.updateOne,deleteProject:qe.deleteOne,deleteProjects:qe.deleteMany}}),{initializeProjects:vh,setProjects:Ag,setProject:yg,addProjects:fg,addProject:Wi,updateProjects:Sg,updateProject:wh,deleteProject:Ki,deleteProjects:gg}=Hi.actions,Mh=Hi.reducer,Eh=t=>t.projectReducer.instances,Yi=d.createSelector([Eh],t=>g(Object.values(t))),jh=t=>e=>e.projectReducer.instances[t],bg=f(d.createSelector([Yi,kt,(t,e)=>e],(t,e,s)=>{const i=new Set(e.filter(c=>c.user===s).map(c=>c.project));return g(t.filter(c=>i.has(c.uuid)))})),Pg=f(d.createSelector([Yi,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization_owner===e)))),Fg={isRehydrated:!1},Ji=d.createSlice({name:"rehydrated",initialState:Fg,reducers:{setRehydrated:(t,e)=>{t.isRehydrated=e.payload}}}),{setRehydrated:Tg}=Ji.actions,Ig=t=>t.rehydratedReducer.isRehydrated,qh=Ji.reducer,Ve=I(t=>t.uuid),Vh=Ve.getInitialState({}),Zi=d.createSlice({name:"teamMemberships",initialState:Vh,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Vh)),reducers:{initializeTeamMemberships:Ve.initialize,addTeamMembership:Ve.addOne,addTeamMemberships:Ve.addMany,setTeamMembership:Ve.setOne,setTeamMemberships:Ve.setMany,updateTeamMembership:Ve.updateOne,updateTeamMemberships:Ve.updateMany,deleteTeamMembership:Ve.deleteOne,deleteTeamMemberships:Ve.deleteMany}}),{initializeTeamMemberships:zh,addTeamMembership:Uh,addTeamMemberships:Og,setTeamMembership:Xi,setTeamMemberships:_g,updateTeamMembership:Rg,updateTeamMemberships:vg,deleteTeamMembership:Qi,deleteTeamMemberships:wg}=Zi.actions,Dh=Zi.reducer,Ch=t=>t.teamMembershipReducer.instances,xi=d.createSelector([Ch],t=>Object.values(t)),kh=t=>e=>e.teamMembershipReducer.instances[t],Mg=f(d.createSelector([xi,(t,e)=>e],(t,e)=>{const s={};for(const i of t.filter(c=>c.team===e))s[i.user]=i;return s})),Eg=f(d.createSelector([Mi,xi,(t,e)=>e],(t,e,s)=>{const i=new Set(e.filter(c=>c.team===s).map(c=>c.user));return g(t.filter(c=>i.has(c.id)))})),ze=I(t=>t.uuid),Bh=ze.getInitialState({}),ec=d.createSlice({name:"teams",initialState:Bh,extraReducers:t=>t.addMatcher(d.isAnyOf(F,_),e=>Object.assign(e,Bh)),reducers:{initializeTeams:ze.initialize,addTeam:ze.addOne,addTeams:ze.addMany,setTeam:ze.setOne,setTeams:ze.setMany,updateTeam:ze.updateOne,updateTeams:ze.updateMany,deleteTeam:ze.deleteOne,deleteTeams:ze.deleteMany}}),{initializeTeams:$h,addTeam:Gh,addTeams:jg,setTeam:dt,setTeams:qg,updateTeam:Lh,updateTeams:Vg,deleteTeam:tc,deleteTeams:zg}=ec.actions,sc=t=>t.teamReducer.instances,Nh=d.createSelector([sc],t=>Object.values(t)),ac=t=>e=>e.teamReducer.instances[t],Ug=f(d.createSelector([sc,(t,e)=>e],(t,e)=>{const s=[];for(const i of e){const c=t[i];c?s.push(c):console.warn("selectTeamsByIds: No team exists with the id",i)}return g(s)})),Dg=f(d.createSelector([Nh,(t,e)=>e],(t,e)=>g(t.filter(s=>s.organization===e)))),Hh=ec.reducer,Cg={version:0},Wh=d.createSlice({name:"versioning",initialState:Cg,reducers:{}}),Kh=Wh.reducer,ic={outboxReducer:Xl,fileReducer:tu,authReducer:Pd},kg=d.combineReducers(ic),Yh={...ic,[Ye]:Kh,categoryReducer:Rd,assetReducer:fr,assetAttachmentReducer:kc,assetStageCompletionReducer:Fr,assetStageReducer:vr,assetTypeReducer:Sd,assetTypeAttachmentReducer:kr,issueReducer:vo,issueAttachmentReducer:uo,issueTypeReducer:fl,issueTypeAttachmentReducer:Co,organizationReducer:Hl,projectReducer:Mh,projectAttachmentReducer:Ah,projectAccessReducer:sh,organizationAccessReducer:Cl,projectFileReducer:_h,rehydratedReducer:qh,formReducer:gu,formRevisionReducer:yu,formRevisionAttachmentReducer:du,formSubmissionAttachmentReducer:vu,formSubmissionReducer:zu,userReducer:El,emailDomainsReducer:Zd,documentsReducer:Ld,documentAttachmentReducer:Cd,teamReducer:Hh,agentsReducer:Mc,issueCommentReducer:To,issueCommentAttachmentReducer:go,issueUpdateReducer:_l,geoImageReducer:Hu,issueAssociationReducer:xu,issueTypeFieldsReducer:al,issueTypeFieldValuesReducer:Zo,issueTypeFieldsAttachmentReducer:Wo,issueTypeFieldValuesAttachmentReducer:ol,assetTypeFieldsReducer:ed,assetTypeFieldValuesReducer:pd,assetTypeFieldsAttachmentReducer:Kr,assetTypeFieldValuesAttachmentReducer:rd,assetProcedureReducer:Un,assetProcedureInstanceReducer:jn,assetProcedureFieldsReducer:hn,assetProcedureFieldValuesReducer:_n,assetProcedureFieldsAttachmentReducer:cn,assetProcedureFieldValuesAttachmentReducer:gn,assetProcedureAttachmentReducer:Zc,assetProcedureStepFieldsAttachmentReducer:Nn,assetProcedureStepFieldsReducer:Kn,assetProcedureStepFieldValuesAttachmentReducer:er,assetProcedureStepFieldValuesReducer:rr,assetProcedureStepReducer:lr,teamMembershipReducer:Dh},Bg=d.combineReducers(Yh);let Jh;function $g(t){Jh=t}function ut(){return Jh}let Zh;function Gg(t){Zh=t}function Lg(){return Zh}const Xh={};class Qh{constructor(e){S(this,"client");Xh[this.constructor.name]=this,this.client=e}async enqueueRequest(e){return this.client.enqueueRequest(e,this.host,this.constructor.name)}dispatch(e){this.client.store.dispatch(e)}}const xh=()=>sm.length-1,em=t=>(t[Ye]={version:xh()},t),tm=()=>em({}),Ng=t=>(t.outboxReducer&&(t.outboxReducer.deletedRequests=[]),t),Hg=t=>e=>{var s;return e===void 0&&(e={}),((s=e[Ye])==null?void 0:s.version)===xh()?e:t(e)},sm=[em,tm,tm,Ng],Wg=Object.fromEntries(sm.map((t,e)=>[e,Hg(t)]));let cc=null;function Ce(){const t=ut();if(!t)return console.warn("Client store not set; cannot get outbox coordinator yet."),null;if(cc)return cc;const e=t.getState().offline.outbox,s=We._fromOutbox(e);return cc=s,s}const Kg=t=>{if(t)throw t;const e=ut();e?e.dispatch({type:"rehydrated/setRehydrated",payload:!0}):console.error("Client store not set")},am=(t,e,s)=>{const i=Ce();return i?(i.addRequest(e),i.getQueue()):(console.warn("Outbox coordinator not set; cannot enqueue request yet."),[])},im=(t,e,s)=>{const i=Ce();if(!i)return console.warn("Outbox coordinator not set; cannot dequeue request yet."),[];const n=e.meta.offlineAction.payload.uuid;return i.remove(n),i.getQueue()};async function Yg(t,e){if(!e.payload)throw new Error("Received empty payload");return ab(e)}const Jg={...lc,effect:Yg,discard:rc,returnPromises:!0,persistCallback:Kg,retry:cb,persistOptions:{storage:hm},queue:{...lc.queue,enqueue:am,dequeue:im,peek:(...t)=>ib(...t)}},Zg=mm(Wg,Ye),Xg=d.compose(lm.offline(Jg),Zg);function Qg(t){function e(s){return typeof s=="object"&&s!==null&&["ok","redirect","clientError","serverError","error"].every(c=>c in s)}if(e(t))return t;if(typeof t=="object"&&t!==null){const s=t;if(e(s.response))return s.response;if(s.response&&e(s.response.response))return s.response.response}}async function nc(t,e){const s=Xh[t.meta.offline.effect.serviceName];if(!s)throw new Error(`Service ${t.meta.offline.effect.serviceName} not found`);const i=s instanceof R;if(e.store.getState().outboxReducer.deletedRequests.includes(t.payload.uuid))throw new Error("Request was marked for deletion");i&&t.payload.checkAuth!==!1&&await s.auth.prepareAuth();const n={queryParams:"",isAuthNeeded:!0},r=t.meta.offline.effect,{payload:o,headers:m,method:u,queryParams:l,attachmentHash:p,isExternalUrl:A,isAuthNeeded:y,isResponseBlob:b}={...n,...r.request},P=r.request;let O=P.url;const w=p?await e.files.fetchCache(p):void 0;if(p&&!w)throw new Error(`Cannot upload file ${p} because it's not cached.`);!A&&!O.startsWith("http")&&(!O.startsWith("/")&&!O.startsWith("blob:")&&(O="/"+O),O=t.meta.offline.effect.BASE_URL+O);const q=V=>{if(p){const Ue=P.s3url;if(!Ue)throw new Error(`No S3 URL for file ${p}`);if("warning"in Ue)throw new Error(`S3 URL warning for file ${p}`);if(!w)throw new Error(`No file for file ${p}`);const ot=Ue.fields["x-amz-checksum-sha1"];if(!ot)throw new Error(`No checksum for file ${p}`);return V.set("x-amz-checksum-sha1",ot).field({...o,...Ue.fields}).attach("file",w)}return V.send(o)},fP={[h.GET]:()=>b?$e.get(O.toString()).responseType("blob"):$e.get(O.toString()),[h.POST]:()=>{const V=$e.post(O.toString());return q(V)},[h.PATCH]:()=>{const V=$e.patch(O.toString());return q(V)},[h.PUT]:()=>{const V=$e.put(O.toString());return q(V)},[h.DELETE]:()=>{const V=$e.delete(O.toString());return q(V)}}[u];let Be=fP();if(y&&i){const V=s.auth.getAuthHeader();Be=Be.set("Authorization",V)}m&&(Be=Be.set(m));try{return await Be.query(l)}catch(V){const Ue=Qg(V),ot=Ue==null?void 0:Ue.status;if(i&&ot===401)return await s.auth.handleUnauthorized(Be,Ue),Be.query(l);throw new U({response:Ue,innerError:V,discard:nm.includes(ot)})}}class xg{constructor(e){S(this,"_all");S(this,"_previous");this._all=[e],this._previous=e,this.then=this.then.bind(this),this.compile=this.compile.bind(this)}then(e){return this._previous&&(this._previous.next=e),this._all.push(e),this._previous=e,{then:this.then,compile:this.compile}}compile(){return this._all}}class cm{constructor(){S(this,"next");this.next=null}then(e){return new xg(this).then(e)}async run(e){if(this.next)return this.next.run(e);{if(console.debug("Middleware finished. Performing request:",e),!ut())throw new Error("Client store not set");const i=Lg();if(!i)throw new Error("Client SDK not set");return nc(e,i)}}}class eb extends cm{async run(e){return super.run(e)}}class tb extends cm{async run(e){return super.run(e)}}const sb=new eb().then(new tb).compile();function ab(t){var e;return(e=sb[0])==null?void 0:e.run(t)}const nm=[400,409,403,404,405,500];function rc(t,e,s=0){var u;if(console.debug("Considering discarding request due to error:",t,`(${typeof t})`,`
3
3
  Action:`,e,`
4
4
  Retries:`,s),!(t instanceof Error))throw console.error("ENCOUNTERED NON-ERROR ERROR:",t,"(throwing immediately, which may lead to unexpected behavior)"),t;const i=ut(),n=i.getState().outboxReducer.deletedRequests,r=e.payload.uuid;function o(){i.dispatch(Jl(r));const l=Ce();if(!l)throw new Error("Outbox coordinator not set");l.remove(e.payload.uuid);const p=e.meta.offline.rollback;throw p&&(console.warn("Rolling back request due to SDK error:",e),i.dispatch(p)),t}if(t instanceof U&&t.options.discard)return console.debug("Discarding request due to explicit discard:",e),o();if(n.includes(r))return console.debug("Discarding request due to deletion:",e),o();if(t instanceof U){const l=t.status||((u=t.response)==null?void 0:u.status);if(l||console.warn("Error has no status code:",t),l!==void 0&&nm.includes(l)){console.warn("Discarding request due to error:",t,`
5
5
  Action:`,e);const p=Ce();if(!p)throw new Error("Outbox coordinator not set");p.remove(e.payload.uuid),t.options.discard=!0,o()}}console.debug("Registering a retry for request:",e.payload.uuid);const m=Ce();if(!m)throw new Error("Outbox coordinator not set");return m.registerRetry(e.payload.uuid),!1}function ib(t,e,s){var i;return(i=Ce())==null?void 0:i.peek()}function cb(t,e){return ut().dispatch(Zl(new Date().getTime())),yc}const He="An unknown error occurred",nb=500,rm=["non_field_errors","detail"];function rb(t,e){let s;if(t!=null&&t.body)if(typeof t.body=="object"){const i=t.body;if(typeof i.error=="string")s=i.error;else if(typeof i.message=="string")s=i.message;else try{s=Object.entries(i).map(([c,n])=>typeof n=="string"?rm.includes(c)?n:`${c}: ${n}`:Array.isArray(n)?rm.includes(c)?n.join(`
6
6
  `):n.map(r=>`${c}: ${r}`).join(`
7
7
  `):`${c}: ${JSON.stringify(n)}`).join(`
8
- `)}catch(c){console.error("Failed to extract error message from response body",c)}}else typeof t.body=="string"&&(s=t.body);else t!=null&&t.text?s=t.text:e instanceof Error&&(s=e.message);return!s||s.length>nb?He:s}class U extends Error{constructor(s){super(He);S(this,"status");S(this,"response");S(this,"message");S(this,"options");const{response:i,innerError:c}=s;this.message=s.message??rb(i,c)??He,this.status=(i==null?void 0:i.status)??0,this.response=i,s.discard=s.discard??!1,this.options=s}}class db extends Qh{constructor(e){super(e)}}class R extends Qh{constructor(s,i){super(s);S(this,"auth");this.auth=i}}class ub extends R{async startConversation(e,s){return this.enqueueRequest({description:"Start agent conversation",method:h.POST,url:"/agents/prompt/",payload:{prompt:e,active_project:s},blockers:["prompt"],blocks:["prompt"]}).then(i=>(this.dispatch(Rc(i)),i))}async continueConversation(e,s,i){return this.enqueueRequest({description:"Prompt agent",method:h.POST,url:"/agents/prompt/",payload:{prompt:e,active_project:i},blockers:["prompt"],blocks:["prompt"],queryParams:{conversation_id:s}}).then(c=>{this.dispatch(wc(c))})}async fetchDetails(e){return this.enqueueRequest({description:"Get agent conversation",method:h.GET,url:`/agents/conversations/${e}/`,blockers:["conversation"],blocks:["conversation"]}).then(s=>{this.dispatch(vc(s))})}async rate(e,s){return this.enqueueRequest({description:"Rate agent response",method:h.PUT,url:`/agents/responses/${e}/rate/`,payload:{rating:s},blockers:["rate"],blocks:["rate"]})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get agent conversation history",method:h.GET,url:"/agents/conversations/",queryParams:{project:e},blockers:["agent-conversations"],blocks:["agent-conversations"]});return this.dispatch(_c(s)),s}}class j extends R{getNumberOfAttachmentsWithSha1(e){const{issueAttachmentReducer:s,assetAttachmentReducer:i,assetTypeAttachmentReducer:c,documentAttachmentReducer:n,projectAttachmentReducer:r,formRevisionAttachmentReducer:o,formSubmissionAttachmentReducer:m,geoImageReducer:u,assetTypeFieldsAttachmentReducer:l,assetTypeFieldValuesAttachmentReducer:p,issueTypeFieldsAttachmentReducer:A,issueTypeFieldValuesAttachmentReducer:y}=this.client.store.getState();return[].concat(Object.values(s.instances),Object.values(i.instances),Object.values(c.instances),Object.values(n.instances),Object.values(r.instances),Object.values(o.instances),Object.values(m.instances),Object.values(u.instances),Object.values(l.instances),Object.values(p.instances),Object.values(A.instances),Object.values(y.instances)).filter(P=>P.file_sha1===e).length}processPresignedUrls(e){const s={};for(const[i,c]of Object.entries(e))s[i]=this.enqueueRequest({url:c.url,description:"Upload file to S3",method:h.POST,isExternalUrl:!0,isAuthNeeded:!1,attachmentHash:i,blockers:[`s3-${c.fields.key}`],blocks:[i],s3url:c});return s}async getFilePayload(e){const s=await Le(e),i={sha1:s,file_type:e.type,extension:e.name.split(".").pop(),size:e.size};return await this.client.files.addCache(e,s),i}}class De extends j{async _bulkAdd(e){var u;const{store:s}=this.client,i=(u=s.getState().userReducer.currentUser)==null?void 0:u.id,c=new Date().toISOString(),n=[],r=[],o={};for(const l of e){const{modelUuid:p,file:A}=l,y=await this.getFilePayload(A);y.sha1 in o||(o[y.sha1]=y);const b=this.buildOfflineAttachment({file:A,file_sha1:y.sha1,submitted_at:c,created_by:i,description:"",modelUuid:p});n.push(b),r.push(this.buildAttachmentPayload({uuid:b.uuid,file_name:b.file_name,file_sha1:b.file_sha1,file_extension:y.extension,description:b.description,modelUuid:p}))}this.dispatch(this.addAttachments(n));const m=this.enqueueRequest({description:`Add ${this.name}`,method:h.POST,url:`${this.url}/bulk/`,payload:{submitted_at:c,attachments:r,files:Object.values(o)},blocks:n.map(l=>l.uuid),blockers:n.map(l=>l.file_sha1)});return m.then(({attachments:l,presigned_urls:p})=>{this.dispatch(this.updateAttachments(l)),this.processPresignedUrls(p)}).catch(()=>{this.dispatch(this.removeAttachments(n.map(l=>l.uuid)))}),[n,m.then(({attachments:l})=>l)]}async _delete(e){const{store:s}=this.client,i=this.selectAttachment(e)(s.getState());if(!i)throw new Error(`Attempting to delete attachment with uuid ${e} that does not exist in the store`);this.dispatch(this.removeAttachment(i.uuid));const c=this.enqueueRequest({description:`Delete ${this.name}`,method:h.DELETE,url:`${this.url}/${e}/`,blockers:[e],blocks:[]});return c.then(()=>{this.getNumberOfAttachmentsWithSha1(i.file_sha1)===0&&this.client.files.removeCache(i.file_sha1)}).catch(()=>{this.dispatch(this.setAttachment(i))}),c}}class ob extends De{constructor(){super(...arguments);S(this,"name","Asset Attachment");S(this,"url","/asset-attachments");S(this,"initializeAttachments",Xt);S(this,"addAttachments",Qt);S(this,"updateAttachments",qc);S(this,"removeAttachments",xt);S(this,"removeAttachment",Vc);S(this,"setAttachment",jc);S(this,"selectAttachment",Dc)}buildOfflineAttachment(s){return T({file:URL.createObjectURL(s.file),file_sha1:s.file_sha1,created_by:s.created_by,file_name:s.file.name,file_type:s.file.type,submitted_at:s.submitted_at,description:s.description,asset:s.modelUuid})}buildAttachmentPayload(s){return{...s,asset:s.modelUuid}}async bulkAdd(s){return this._bulkAdd(s.map(i=>({modelUuid:i.assetUuid,file:i.file})))}async delete(s){return this._delete(s)}async refreshStore(s){const i=await this.enqueueRequest({description:"Get asset attachments",method:h.GET,url:`${this.url}/`,queryParams:{asset__project:s},blocks:[],blockers:[]});return this.dispatch(Xt(i)),i}}class lb extends De{constructor(){super(...arguments);S(this,"name","Asset Procedure Attachment");S(this,"url","/asset-procedure-attachments");S(this,"addAttachments",Gc);S(this,"updateAttachments",Nc);S(this,"removeAttachments",Wc);S(this,"removeAttachment",Hc);S(this,"setAttachment",Lc);S(this,"selectAttachment",Jc)}buildOfflineAttachment(s){return T({file:URL.createObjectURL(s.file),file_sha1:s.file_sha1,created_by:s.created_by,file_name:s.file.name,file_type:s.file.type,submitted_at:s.submitted_at,description:s.description,asset_procedure:s.modelUuid})}buildAttachmentPayload(s){return{...s,asset_procedure:s.modelUuid}}async bulkAdd(s){return this._bulkAdd(s.map(i=>({modelUuid:i.assetProcedureUuid,file:i.file})))}async delete(s){return this._delete(s)}async refreshStore(s){const i=await this.enqueueRequest({description:"Get asset procedure attachments",method:h.GET,url:`${this.url}/`,queryParams:{asset_procedure__organization:s},blocks:[],blockers:[]});return this.dispatch($c(i)),i}}class hb extends j{async bulkAdd(e){var m;const s=new Date().toISOString(),i=(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,c={},n=[],r=[];for(const u of e){const{fieldsRevisionUuid:l,fieldIdentifier:p,file:A}=u,y=await this.getFilePayload(A);y.sha1 in c||(c[y.sha1]=y);const b=T({file:URL.createObjectURL(A),file_type:A.type,file_name:A.name,file_sha1:y.sha1,created_by:i,fields_revision:l,submitted_at:s,field_identifier:p});n.push(b);const P={uuid:b.uuid,file_name:A.name,field_identifier:p,file_extension:y.extension,file_sha1:y.sha1,fields_revision:l};r.push(P)}this.dispatch(xc(n));const o=this.enqueueRequest({description:"Add asset procedure fields attachments",method:h.POST,url:"/asset-procedure-fields-attachments/bulk/",payload:{submitted_at:s,attachments:r,files:Object.values(c)},blockers:n.map(u=>u.fields_revision),blocks:n.map(u=>u.uuid)});return o.then(u=>{this.processPresignedUrls(u.presigned_urls),this.dispatch(en(u.attachments))}).catch(()=>{this.dispatch(tn(n.map(u=>u.uuid)))}),[n,o.then(({attachments:u})=>u)]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure fields attachments",method:h.GET,url:"/asset-procedure-fields-attachments/",queryParams:{fields_revision__asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(Qc(s)),s}}class mb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(dn(n));const r=this.enqueueRequest({description:"Add Asset Procedure Fields",method:h.POST,url:"/asset-procedure-fields/",payload:v(n),blockers:[n.asset_procedure],blocks:[n.uuid]});return r.then(m=>{this.dispatch(un(m))}).catch(m=>{throw this.dispatch(on(n.uuid)),m}),[n,r]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get Asset Procedure Fields",method:h.GET,url:"/asset-procedure-fields/",queryParams:{asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(rn(s)),s}}function ke(t,e){const s=[];let i=0;const c=t.length;for(;i<c;)s.push(t.slice(i,i+=e));return s}class pb extends j{async bulkAdd(e,s){var u;const i=new Date().toISOString(),c=(u=this.client.store.getState().userReducer.currentUser)==null?void 0:u.id,n=ke(e,s??e.length),r=[],o=[];for(const l of n){const p={},A=[];for(const y of l){const{fieldValuesUuid:b,fieldIdentifier:P,file:O}=y,w=await this.getFilePayload(O);w.sha1 in p||(p[w.sha1]=w);const q=T({file:URL.createObjectURL(O),file_type:O.type,file_name:O.name,file_sha1:w.sha1,created_by:c,field_values:b,submitted_at:i,field_identifier:P});r.push(q);const Ke={uuid:q.uuid,file_name:O.name,file_sha1:w.sha1,file_extension:w.extension,field_identifier:P,field_values:b};A.push(Ke)}o.push({submitted_at:i,attachments:A,files:Object.values(p)})}this.dispatch(ht(r));const m=o.map(l=>this.enqueueRequest({description:"Add asset procedure field values attachments",method:h.POST,url:"/asset-procedure-field-values-attachments/bulk/",payload:l,blockers:l.attachments.map(p=>p.field_values),blocks:l.attachments.map(p=>p.uuid)}));return Promise.all(m).then(l=>{for(const A of l)this.processPresignedUrls(A.presigned_urls);const p=l.flatMap(A=>A.attachments);this.dispatch(An(p))}).catch(l=>{throw this.dispatch(mt(r.map(p=>p.uuid))),l}),[r,m.map(l=>l.then(({attachments:p})=>p))]}async bulkDelete(e){const{store:s}=this.client,i=s.getState(),c=fn(e)(i);this.dispatch(mt(e));try{await this.enqueueRequest({description:"Delete asset procedure field values attachments",method:h.DELETE,url:"/asset-procedure-field-values-attachments/bulk/",payload:{uuids:e},blockers:e,blocks:[]})}catch(n){throw this.dispatch(ht(c)),n}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure field values attachments",method:h.GET,url:"/asset-procedure-field-values-attachments/",queryParams:{field_values__asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(pn(s)),s}}class Ab extends R{add(e){var r;const{store:s}=this.client,i=s.getState(),c=T({...e,created_by:(r=i.userReducer.currentUser)==null?void 0:r.id,submitted_at:new Date().toISOString()}),n=this.enqueueRequest({description:"Add asset procedure field values",method:h.POST,url:"/asset-procedure-field-values/",payload:v(c),blockers:[e.asset,e.fields_revision,e.asset_procedure_instance],blocks:[c.uuid]});return this.dispatch(rs(c)),n.then(o=>(this.dispatch(Je(o)),o)).catch(()=>{this.dispatch(ds(c.uuid))}),[c,n]}bulkAdd(e,s){var m;const i=new Date().toISOString(),c=[],n=ke(e.payloads,s??e.payloads.length),r=[];for(const u of n){const l=[];for(const p of u){const A=T({...p,values:p.values,created_by:(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,submitted_at:i});c.push(A),l.push({uuid:A.uuid,asset:p.asset,fields_revision:p.fields_revision,asset_procedure_instance:p.asset_procedure_instance,published_at:p.published_at,values:A.values})}r.push({submitted_at:i,values:e.values,field_values:l})}this.dispatch(Fn(c));const o=[];for(const u of r){const l=u.field_values.map(P=>P.asset),p=u.field_values.map(P=>P.fields_revision),A=u.field_values.map(P=>P.asset_procedure_instance),y=u.field_values.map(P=>P.uuid),b=this.enqueueRequest({description:"Bulk add asset procedure field values",method:h.POST,url:"/asset-procedure-field-values/bulk/",payload:u,blockers:[...l,...p,...A],blocks:y});o.push(b)}return Promise.all(o).then(u=>{this.dispatch(Tn(u.flat()))}).catch(()=>{this.dispatch(In(c.map(u=>u.uuid)))}),[c,o]}update(e){const{store:s}=this.client,i=s.getState(),c=os(e.uuid)(i);if(!c)throw new Error(`Expected AssetProcedureFieldValues with uuid ${e.uuid} to exist`);const n={...c,...e};this.dispatch(Je(n));const r=this.enqueueRequest({description:"Update asset procedure field values",method:h.PATCH,url:`/asset-procedure-field-values/${e.uuid}/`,payload:e,blockers:[n.fields_revision,n.asset,n.asset_procedure_instance],blocks:[n.uuid]});return r.then(o=>{this.dispatch(Je(o))}).catch(()=>{this.dispatch(Je(c))}),[n,r]}async delete(e){const{store:s}=this.client,i=s.getState(),c=os(e)(i);if(!c)throw new Error(`Expected submission with uuid ${e} to exist`);const n=Sn(e)(i);this.dispatch(ds(e)),this.dispatch(mt(n.map(r=>r.uuid)));try{await this.enqueueRequest({description:"Delete asset procedure field values",method:h.DELETE,url:`/asset-procedure-field-values/${e}/`,blockers:[e],blocks:[]})}catch(r){throw this.dispatch(rs(c)),this.dispatch(ht(n)),r}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure field values",method:h.GET,url:"/asset-procedure-field-values/",queryParams:{asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(Pn(s)),s}}class yb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(hs(n));const r=this.enqueueRequest({description:"Create asset procedure instance",method:h.POST,url:"/asset-procedure-instances/",payload:v(n),blockers:[e.asset_procedure,e.asset_type],blocks:[n.uuid]});return r.then(m=>{this.dispatch(Ze(m))}).catch(()=>{this.dispatch(ms(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=ys(e.uuid)(s.getState());if(!i)throw new Error(`Expected asset procedure instance with uuid ${e.uuid} to exist`);const c={...i,...e};this.dispatch(Ze(c));const n=this.enqueueRequest({description:"Update asset procedure instance",method:h.PATCH,url:`/asset-procedure-instances/${e.uuid}/`,payload:e,blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(Ze(r))}).catch(()=>{this.dispatch(Ze(i))}),[c,n]}async remove(e){const{store:s}=this.client,i=s.getState(),c=ys(e)(i);if(!c)throw new Error(`Expected asset procedure instance with uuid ${e} to exist`);return this.dispatch(ms(e)),this.enqueueRequest({description:"Delete asset procedure instance",method:h.DELETE,url:`/asset-procedure-instances/${e}/`,blockers:[e],blocks:[]}).catch(n=>{throw this.dispatch(hs(c)),n})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure instances",method:h.GET,url:"/asset-procedure-instances/",queryParams:{project:e},blockers:[],blocks:[]});return this.dispatch(vn(s)),s}}class fb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Ss(n));const r=this.enqueueRequest({description:"Create asset procedure",method:h.POST,url:"/asset-procedures/",payload:v(n),blockers:[],blocks:[n.uuid]});return r.then(m=>{this.dispatch(Xe(m))}).catch(()=>{this.dispatch(gs(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=Ps(e.uuid)(s.getState());if(!i)throw new Error(`Expected asset procedure with uuid ${e.uuid} to exist`);const c={...i,...e};this.dispatch(Xe(c));const n=this.enqueueRequest({description:"Update asset procedure",method:h.PATCH,url:`/asset-procedures/${e.uuid}/`,payload:e,blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(Xe(r))}).catch(()=>{this.dispatch(Xe(i))}),[c,n]}async remove(e){const{store:s}=this.client,i=s.getState(),c=Ps(e)(i);if(!c)throw new Error(`Expected asset procedure with uuid ${e} to exist`);const n=En(e)(i);return this.dispatch(gs(e)),this.dispatch(Mn(n.map(r=>r.uuid))),this.enqueueRequest({description:"Delete asset procedure",method:h.DELETE,url:`/asset-procedures/${e}/`,blockers:[e],blocks:[]}).catch(r=>{throw this.dispatch(Ss(c)),this.dispatch(wn(n)),r})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedures",method:h.GET,url:"/asset-procedures/",queryParams:{organization:e},blockers:[],blocks:[]});return this.dispatch(Vn(s)),s}}class Sb extends j{async bulkAdd(e){var m;const s=new Date().toISOString(),i=(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,c={},n=[],r=[];for(const u of e){const{fieldsRevisionUuid:l,fieldIdentifier:p,file:A}=u,y=await this.getFilePayload(A);y.sha1 in c||(c[y.sha1]=y);const b=T({file:URL.createObjectURL(A),file_type:A.type,file_name:A.name,file_sha1:y.sha1,created_by:i,fields_revision:l,submitted_at:s,field_identifier:p});n.push(b);const P={uuid:b.uuid,file_name:A.name,field_identifier:p,file_extension:y.extension,file_sha1:y.sha1,fields_revision:l};r.push(P)}this.dispatch(kn(n));const o=this.enqueueRequest({description:"Add asset procedure step fields attachments",method:h.POST,url:"/asset-procedure-step-fields-attachments/bulk/",payload:{submitted_at:s,attachments:r,files:Object.values(c)},blockers:n.map(u=>u.fields_revision),blocks:n.map(u=>u.uuid)});return o.then(u=>{this.processPresignedUrls(u.presigned_urls),this.dispatch(Bn(u.attachments))}).catch(()=>{this.dispatch($n(n.map(u=>u.uuid)))}),[n,o.then(({attachments:u})=>u)]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure step fields attachments",method:h.GET,url:"/asset-procedure-step-fields-attachments/",queryParams:{fields_revision__asset_procedure_step__organization:e},blockers:[],blocks:[]});return this.dispatch(Cn(s)),s}}class gb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Is(n));const r=this.enqueueRequest({description:"Add Asset Procedure Step Fields",method:h.POST,url:"/asset-procedure-step-fields/",payload:v(n),blockers:[n.asset_procedure_step],blocks:[n.uuid]});return r.then(m=>{this.dispatch(Qe(m))}).catch(m=>{throw this.dispatch(Os(n.uuid)),m}),[n,r]}update(e){const{store:s}=this.client,i=s.getState().assetProcedureStepFieldsReducer.instances[e.uuid];if(!i)throw new Error(`AssetProcedureStepFields with uuid ${e.uuid} not found`);const c={...i,...e};this.dispatch(Qe(c));const n=this.enqueueRequest({description:"Update Asset Procedure Step Fields",method:h.PATCH,url:`/asset-procedure-step-fields/${i.uuid}/`,payload:e,blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(Qe(r))}).catch(r=>{throw this.dispatch(Qe(i)),r}),[c,n]}delete(e){const{store:s}=this.client,i=s.getState().assetProcedureStepFieldsReducer.instances[e];if(!i)throw new Error(`AssetProcedureStepFields with uuid ${e} not found`);this.dispatch(Os(e));const c=this.enqueueRequest({description:"Delete Asset Procedure Step Fields",method:h.DELETE,url:`/asset-procedure-step-fields/${e}/`,blockers:[e],blocks:[e]});return c.catch(n=>{throw this.dispatch(Is(i)),n}),c}async refreshStore(e){const s=await this.enqueueRequest({description:"Get Asset Procedure Step Fields",method:h.GET,url:"/asset-procedure-step-fields/",queryParams:{asset_procedure_step__asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(Wn(s)),s}}class bb extends j{async bulkAdd(e,s){var u;const i=new Date().toISOString(),c=(u=this.client.store.getState().userReducer.currentUser)==null?void 0:u.id,n=ke(e,s??e.length),r=[],o=[];for(const l of n){const p={},A=[];for(const y of l){const{fieldValuesUuid:b,fieldIdentifier:P,file:O}=y,w=await this.getFilePayload(O);w.sha1 in p||(p[w.sha1]=w);const q=T({file:URL.createObjectURL(O),file_type:O.type,file_name:O.name,file_sha1:w.sha1,created_by:c,field_values:b,submitted_at:i,field_identifier:P});r.push(q);const Ke={uuid:q.uuid,file_name:O.name,file_sha1:w.sha1,file_extension:w.extension,field_identifier:P,field_values:b};A.push(Ke)}o.push({submitted_at:i,attachments:A,files:Object.values(p)})}this.dispatch(pt(r));const m=o.map(l=>this.enqueueRequest({description:"Add asset procedure step field values attachments",method:h.POST,url:"/asset-procedure-step-field-values-attachments/bulk/",payload:l,blockers:l.attachments.map(p=>p.field_values),blocks:l.attachments.map(p=>p.uuid)}));return Promise.all(m).then(l=>{for(const A of l)this.processPresignedUrls(A.presigned_urls);const p=l.flatMap(A=>A.attachments);this.dispatch(Zn(p))}).catch(l=>{throw this.dispatch(At(r.map(p=>p.uuid))),l}),[r,m.map(l=>l.then(({attachments:p})=>p))]}async bulkDelete(e){const{store:s}=this.client,i=s.getState(),c=Qn(e)(i);this.dispatch(At(e));try{await this.enqueueRequest({description:"Delete asset procedure step field values attachments",method:h.DELETE,url:"/asset-procedure-step-field-values-attachments/bulk/",payload:{uuids:e},blockers:e,blocks:[]})}catch(n){throw this.dispatch(pt(c)),n}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure step field values attachments",method:h.GET,url:"/asset-procedure-step-field-values-attachments/",queryParams:{field_values__asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(Jn(s)),s}}class Pb extends R{add(e){var r;const{store:s}=this.client,i=s.getState(),c=T({...e,created_by:(r=i.userReducer.currentUser)==null?void 0:r.id,submitted_at:new Date().toISOString()}),n=this.enqueueRequest({description:"Add asset procedure step field values",method:h.POST,url:"/asset-procedure-step-field-values/",payload:v(c),blockers:[e.asset,e.fields_revision,e.asset_procedure_instance],blocks:[c.uuid]});return this.dispatch(Es(c)),n.then(o=>(this.dispatch(xe(o)),o)).catch(()=>{this.dispatch(js(c.uuid))}),[c,n]}bulkAdd(e,s){var m;const i=new Date().toISOString(),c=[],n=ke(e.payloads,s??e.payloads.length),r=[];for(const u of n){const l=[];for(const p of u){const A=T({...p,values:p.values,created_by:(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,submitted_at:i});c.push(A),l.push({uuid:A.uuid,asset:p.asset,fields_revision:p.fields_revision,asset_procedure_instance:p.asset_procedure_instance,asset_procedure_step:p.asset_procedure_step,published_at:p.published_at,values:A.values})}r.push({submitted_at:i,values:e.values,field_values:l})}this.dispatch(ar(c));const o=[];for(const u of r){const l=u.field_values.map(P=>P.asset),p=u.field_values.map(P=>P.fields_revision),A=u.field_values.map(P=>P.asset_procedure_instance),y=u.field_values.map(P=>P.uuid),b=this.enqueueRequest({description:"Bulk add asset procedure step field values",method:h.POST,url:"/asset-procedure-step-field-values/bulk/",payload:u,blockers:[...l,...p,...A],blocks:y});o.push(b)}return Promise.all(o).then(u=>{this.dispatch(ir(u.flat()))}).catch(()=>{this.dispatch(cr(c.map(u=>u.uuid)))}),[c,o]}update(e){const{store:s}=this.client,i=s.getState(),c=qs(e.uuid)(i);if(!c)throw new Error(`Expected AssetProcedureStepFieldValues with uuid ${e.uuid} to exist`);const n={...c,...e};this.dispatch(xe(n));const r=this.enqueueRequest({description:"Update asset procedure step field values",method:h.PATCH,url:`/asset-procedure-step-field-values/${e.uuid}/`,payload:e,blockers:[n.fields_revision,n.asset,n.asset_procedure_instance],blocks:[n.uuid]});return r.then(o=>{this.dispatch(xe(o))}).catch(()=>{this.dispatch(xe(c))}),[n,r]}async delete(e){const{store:s}=this.client,i=s.getState(),c=qs(e)(i);if(!c)throw new Error(`Expected submission with uuid ${e} to exist`);const n=xn(e)(i);this.dispatch(js(e)),this.dispatch(At(n.map(r=>r.uuid)));try{await this.enqueueRequest({description:"Delete asset procedure step field values",method:h.DELETE,url:`/asset-procedure-step-field-values/${e}/`,blockers:[e],blocks:[]})}catch(r){throw this.dispatch(Es(c)),this.dispatch(pt(n)),r}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure step field values",method:h.GET,url:"/asset-procedure-step-field-values/",queryParams:{asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(sr(s)),s}}class Fb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(zs(n));const r=this.enqueueRequest({description:"Create asset procedure step",method:h.POST,url:"/asset-procedure-steps/",payload:v(n),blockers:[n.asset_procedure],blocks:[n.uuid]});return r.then(m=>{this.dispatch(ft(m))}).catch(()=>{this.dispatch(Us(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=Ds(e.uuid)(s.getState());if(!i)throw new Error(`No asset procedure step with uuid ${e.uuid} found in the store`);const c={...i,...e};this.dispatch(ft(c));const n=this.enqueueRequest({description:"Update asset procedure step",method:h.PATCH,url:`/asset-procedure-steps/${i.uuid}/`,payload:{name:e.name,description:e.description,priority:e.order,color:e.color},blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(ft(r))}).catch(()=>{this.dispatch(or(i))}),[c,n]}async delete(e){const{store:s}=this.client,i=s.getState(),c=Ds(e)(i);if(!c)throw new Error(`No asset procedure step with uuid ${e} found in the store`);return this.dispatch(Us(e)),this.enqueueRequest({description:"Delete asset stage",method:h.DELETE,url:`/asset-stages/${e}/`,blockers:[e],blocks:[]}).catch(n=>{throw this.dispatch(zs(c)),n})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure steps",method:h.GET,url:"/asset-procedure-steps/",queryParams:{asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(ur(s)),s}}class Tb extends R{add(e){var o;const{store:s}=this.client;if(!e.canvas_marker&&!e.geo_marker)throw new Error("Asset must have either a canvas_marker or geo_marker");const i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(ks(n));const r=this.enqueueRequest({description:"Create asset",method:h.POST,url:"/assets/",payload:v(n),blockers:[n.asset_type],blocks:[n.uuid]});return r.then(m=>{this.dispatch(et(m))}).catch(()=>{this.dispatch(Bs(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=Ns(e.uuid)(s.getState());if(!i)throw new Error(`No asset with uuid ${e.uuid} found in the store`);const c={...i,...e};if(!c.canvas_marker&&!c.geo_marker)throw new Error("Asset must have either a canvas_marker or geo_marker");this.dispatch(et(c));const n=this.enqueueRequest({description:"Edit asset",method:h.PATCH,url:`/assets/${e.uuid}/`,payload:e,blockers:[e.uuid],blocks:[e.uuid]});return n.then(r=>{this.dispatch(et(r))}).catch(()=>{this.dispatch(et(i))}),[c,n]}async delete(e){const{store:s}=this.client,i=s.getState(),c=Ns(e)(i);if(!c)throw new Error(`No asset with uuid ${e} found in the store`);const n=Cc(e)(i),r=Vu(e)(i),o=Qu(e)(i);if(this.dispatch(Bs(e)),n.length>0){const m=n.map(({uuid:u})=>u);this.dispatch(xt(m))}if(r.length>0){const m=r.map(({uuid:u})=>u);this.dispatch(jt(m))}if(o.length>0){const m=o.map(({uuid:u})=>u);this.dispatch(Za(m))}return this.enqueueRequest({description:"Delete asset",method:h.DELETE,url:`/assets/${e}/`,blockers:[e],blocks:[]}).catch(m=>{throw this.dispatch(ks(c)),this.dispatch(Qt(n)),this.dispatch(Et(r)),this.dispatch(Ya(o)),m})}bulkAdd(e,s,i,c){const n=new Date().toISOString(),r=Ge.v4(),o=ke(e,c).map(l=>{const p=l.map(A=>T(A));return{batchId:Ge.v4(),payload:{transaction_id:r,submitted_at:n,asset_type:s,project:i,assets:p}}}),m=[];let u=null;for(const l of o){const{batchId:p,payload:A}=l,y=A.assets.map(w=>w.uuid),b=[s];u&&b.push(u);const P=y;P.push(p);const O=this.enqueueRequest({description:"Batch create assets",method:h.POST,url:"/assets/bulk/",payload:A,blockers:b,blocks:P});u=l.batchId,m.push(O)}return Promise.all(m).then(l=>{const p=l.flat();this.dispatch(gt(p))}),m}async bulkDelete(e){const{store:s}=this.client,i=s.getState(),c=yr(e)(i);this.dispatch($s(e));try{await this.enqueueRequest({description:"Bulk delete assets",method:h.DELETE,url:"/assets/bulk/",payload:{uuids:e},blockers:e,blocks:[]})}catch(n){throw this.dispatch(gt(c)),n}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get assets",method:h.GET,url:"/assets/",queryParams:{project:e},blockers:[],blocks:[]});return this.dispatch(pr(s)),s}}class Ib extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Ws(n));const r=this.enqueueRequest({description:"Add asset stage completion",method:h.POST,url:"/asset-stage-completions/",payload:v(n),blockers:[e.asset,e.stage],blocks:[n.uuid]});return r.then(m=>{this.dispatch(br(m))}).catch(()=>{this.dispatch(Ys(n.uuid))}),[n,r]}delete(e){const{store:s}=this.client,i=Tr(e)(s.getState());if(!i)throw new Error(`Expected asset stage completion with uuid ${e} to exist`);this.dispatch(Ys(e));const c=this.enqueueRequest({description:"Delete asset stage completion",method:h.DELETE,url:`/asset-stage-completions/${e}/`,blockers:[e],blocks:[]});return c.catch(()=>{this.dispatch(Ws(i))}),c}bulkAdd(e){var u;const{store:s}=this.client,i=new Date().toISOString(),c=(u=s.getState().userReducer.currentUser)==null?void 0:u.id,n=e.map(l=>T(l)),r=n.map(l=>({...l,created_by:c,submitted_at:i})),o=r.map(({uuid:l})=>l);this.dispatch(Ks(r));const m=this.enqueueRequest({description:"Bulk create asset stage completions",method:h.POST,url:"/asset-stage-completions/bulk/",payload:{submitted_at:i,completions:n},blockers:[...e.map(l=>l.asset_procedure_instance),...e.map(l=>l.stage),...e.map(l=>l.asset)],blocks:o});return m.then(l=>{this.dispatch(Pr(l))}).catch(()=>{this.dispatch(Js(o))}),[r,m]}bulkDelete(e){const{store:s}=this.client,i=Ir(e)(s.getState());this.dispatch(Js(e));const c=this.enqueueRequest({description:"Deleting asset stage completions",method:h.DELETE,url:"/asset-stage-completions/bulk/",payload:{uuids:e},blockers:e,blocks:[]});return c.catch(()=>{this.dispatch(Ks(i))}),c}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset stage completions",method:h.GET,url:"/asset-stage-completions/",queryParams:{asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(gr(s)),s}}class Ob extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Qs(n));const r=this.enqueueRequest({description:"Create asset",method:h.POST,url:"/asset-stages/",payload:v(n),blockers:[n.asset_procedure],blocks:[n.uuid]});return r.then(m=>{this.dispatch(bt(m))}).catch(()=>{this.dispatch(xs(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=ea(e.uuid)(s.getState());if(!i)throw new Error(`No asset stage with uuid ${e.uuid} found in the store`);const c={...i,...e};this.dispatch(bt(c));const n=this.enqueueRequest({description:"Update asset stage",method:h.PATCH,url:`/asset-stages/${i.uuid}/`,payload:e,blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(bt(r))}).catch(()=>{this.dispatch(Rr(i))}),[c,n]}async delete(e){const{store:s}=this.client,i=s.getState(),c=ea(e)(i);if(!c)throw new Error(`No asset stage with uuid ${e} found in the store`);return this.dispatch(xs(e)),this.enqueueRequest({description:"Delete asset stage",method:h.DELETE,url:`/asset-stages/${e}/`,blockers:[e],blocks:[]}).catch(n=>{throw this.dispatch(Qs(c)),n})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset stages",method:h.GET,url:"/asset-stages/",queryParams:{asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(_r(s)),s}}class _b extends De{constructor(){super(...arguments);S(this,"name","Asset Type Attachment");S(this,"url","/asset-type-attachments");S(this,"addAttachments",sa);S(this,"updateAttachments",qr);S(this,"removeAttachments",aa);S(this,"removeAttachment",Vr);S(this,"setAttachment",jr);S(this,"selectAttachment",Dr)}buildOfflineAttachment(s){return T({file:URL.createObjectURL(s.file),file_sha1:s.file_sha1,created_by:s.created_by,file_name:s.file.name,file_type:s.file.type,submitted_at:s.submitted_at,description:s.description,asset_type:s.modelUuid})}buildAttachmentPayload(s){return{...s,asset_type:s.modelUuid}}async bulkAdd(s){return this._bulkAdd(s.map(i=>({modelUuid:i.assetTypeUuid,file:i.file})))}async delete(s){return this._delete(s)}async refreshStore(s){const i=await this.enqueueRequest({description:"Get asset type attachments",method:h.GET,url:`${this.url}/`,queryParams:{asset_type__organization:s},blocks:[],blockers:[]});return this.dispatch(Er(i)),i}}class Rb extends j{async bulkAdd(e){var m;const s=new Date().toISOString(),i=(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,c={},n=[],r=[];for(const u of e){const{fieldsRevisionUuid:l,fieldIdentifier:p,file:A}=u,y=await this.getFilePayload(A);y.sha1 in c||(c[y.sha1]=y);const b=T({file:URL.createObjectURL(A),file_type:A.type,file_name:A.name,file_sha1:y.sha1,created_by:i,fields_revision:l,submitted_at:s,field_identifier:p});n.push(b);const P={uuid:b.uuid,file_name:A.name,field_identifier:p,file_extension:y.extension,file_sha1:y.sha1,fields_revision:l};r.push(P)}this.dispatch(Gr(n));const o=this.enqueueRequest({description:"Add asset type fields attachments",method:h.POST,url:"/asset-type-fields-attachments/bulk/",payload:{submitted_at:s,attachments:r,files:Object.values(c)},blockers:n.map(u=>u.fields_revision),blocks:n.map(u=>u.uuid)});return o.then(u=>{this.processPresignedUrls(u.presigned_urls),this.dispatch(Lr(u.attachments))}).catch(()=>{this.dispatch(Nr(n.map(u=>u.uuid)))}),[n,o.then(({attachments:u})=>u)]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset type fields attachments",method:h.GET,url:"/asset-type-fields-attachments/",queryParams:{fields_revision__asset_type__organization:e},blockers:[e],blocks:[]});return this.dispatch($r(s)),s}}class vb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Zr(n));const r=this.enqueueRequest({description:"Add Asset Type Fields",method:h.POST,url:"/asset-type-fields/",payload:v(n),blockers:[n.asset_type],blocks:[n.uuid]});return r.then(m=>{this.dispatch(Xr(m))}).catch(m=>{throw this.dispatch(Qr(n.uuid)),m}),[n,r]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get Asset Type Fields",method:h.GET,url:"/asset-type-fields/",queryParams:{asset_type__organization:e},blockers:[],blocks:[]});return this.dispatch(Jr(s)),s}}class wb extends j{async bulkAdd(e,s){var u;const i=new Date().toISOString(),c=(u=this.client.store.getState().userReducer.currentUser)==null?void 0:u.id,n=ke(e,s??e.length),r=[],o=[];for(const l of n){const p={},A=[];for(const y of l){const{fieldValuesUuid:b,fieldIdentifier:P,file:O}=y,w=await this.getFilePayload(O);w.sha1 in p||(p[w.sha1]=w);const q=T({file:URL.createObjectURL(O),file_type:O.type,file_name:O.name,file_sha1:w.sha1,created_by:c,field_values:b,submitted_at:i,field_identifier:P});r.push(q);const Ke={uuid:q.uuid,file_name:O.name,file_sha1:w.sha1,file_extension:w.extension,field_identifier:P,field_values:b};A.push(Ke)}o.push({submitted_at:i,attachments:A,files:Object.values(p)})}this.dispatch(Tt(r));const m=o.map(l=>this.enqueueRequest({description:"Add asset type field values attachments",method:h.POST,url:"/asset-type-field-values-attachments/bulk/",payload:l,blockers:l.attachments.map(p=>p.field_values),blocks:l.attachments.map(p=>p.uuid)}));return Promise.all(m).then(l=>{for(const A of l)this.processPresignedUrls(A.presigned_urls);const p=l.flatMap(A=>A.attachments);this.dispatch(ad(p))}).catch(l=>{throw this.dispatch(It(r.map(p=>p.uuid))),l}),[r,m.map(l=>l.then(({attachments:p})=>p))]}async bulkDelete(e){const{store:s}=this.client,i=s.getState(),c=cd(e)(i);this.dispatch(It(e));try{await this.enqueueRequest({description:"Delete asset type field values attachments",method:h.DELETE,url:"/asset-type-field-values-attachments/bulk/",payload:{uuids:e},blockers:e,blocks:[]})}catch(n){throw this.dispatch(Tt(c)),n}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset type field values attachments",method:h.GET,url:"/asset-type-field-values-attachments/",queryParams:{field_values__asset__project:e},blockers:[],blocks:[]});return this.dispatch(sd(s)),s}}class Mb extends R{add(e){var r;const{store:s}=this.client,i=s.getState(),c=T({...e,created_by:(r=i.userReducer.currentUser)==null?void 0:r.id,submitted_at:new Date().toISOString()}),n=this.enqueueRequest({description:"Add asset type field values",method:h.POST,url:"/asset-type-field-values/",payload:v(c),blockers:[e.asset,e.fields_revision],blocks:[c.uuid]});return this.dispatch(ua(c)),n.then(o=>(this.dispatch(tt(o)),o)).catch(()=>{this.dispatch(oa(c.uuid))}),[c,n]}bulkAdd(e,s){var m;const i=new Date().toISOString(),c=[],n=ke(e.payloads,s??e.payloads.length),r=[];for(const u of n){const l=[];for(const p of u){const A=T({...p,values:p.values,created_by:(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,submitted_at:i});c.push(A),l.push({uuid:A.uuid,asset:p.asset,fields_revision:p.fields_revision,published_at:p.published_at,values:A.values})}r.push({submitted_at:i,values:e.values,field_values:l})}this.dispatch(od(c));const o=[];for(const u of r){const l=u.field_values.map(b=>b.asset),p=u.field_values.map(b=>b.fields_revision),A=u.field_values.map(b=>b.uuid),y=this.enqueueRequest({description:"Bulk add asset type field values",method:h.POST,url:"/asset-type-field-values/bulk/",payload:u,blockers:[...l,...p],blocks:A});o.push(y)}return Promise.all(o).then(u=>{this.dispatch(ld(u.flat()))}).catch(()=>{this.dispatch(hd(c.map(u=>u.uuid)))}),[c,o]}update(e){const{store:s}=this.client,i=s.getState(),c=ha(e.uuid)(i);if(!c)throw new Error(`Expected AssetTypeFieldValues with uuid ${e.uuid} to exist`);const n={...c,...e};this.dispatch(tt(n));const r=this.enqueueRequest({description:"Delete asset type field values",method:h.PATCH,url:`/asset-type-field-values/${e.uuid}/`,payload:e,blockers:[n.uuid,n.fields_revision,n.asset],blocks:[n.uuid]});return r.then(o=>{this.dispatch(tt(o))}).catch(()=>{this.dispatch(tt(c))}),[n,r]}async delete(e){const{store:s}=this.client,i=s.getState(),c=ha(e)(i);if(!c)throw new Error(`Expected submission with uuid ${e} to exist`);const n=nd(e)(i);this.dispatch(oa(e)),this.dispatch(It(n.map(r=>r.uuid)));try{await this.enqueueRequest({description:"Delete asset type field values",method:h.DELETE,url:`/asset-type-field-values/${e}/`,blockers:[e],blocks:[]})}catch(r){throw this.dispatch(ua(c)),this.dispatch(Tt(n)),r}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset type field values",method:h.GET,url:"/asset-type-field-values/",queryParams:{asset__project:e},blockers:[],blocks:[]});return this.dispatch(ud(s)),s}}class Eb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(pa(n));const r=this.enqueueRequest({description:"Create asset type",method:h.POST,url:"/asset-types/",payload:v(n),blockers:[],blocks:[n.uuid]});return r.then(m=>{this.dispatch(st(m))}).catch(()=>{this.dispatch(Aa(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=fa(e.uuid)(s.getState());if(!i)throw new Error(`Expected asset type with uuid ${e.uuid} to exist`);const c={...i,...e};this.dispatch(st(c));const n=this.enqueueRequest({description:"Update asset type",method:h.PATCH,url:`/asset-types/${e.uuid}/`,payload:{icon:e.icon,color:e.color,name:e.name,description:e.description},blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(st(r))}).catch(()=>{this.dispatch(st(i))}),[c,n]}async delete(e){const{store:s}=this.client,i=s.getState(),c=fa(e)(i);if(!c)throw new Error(`Expected asset type with uuid ${e} to exist`);const n=Ls(e)(i),r=Cr(e)(i);return this.dispatch(Aa(e)),this.dispatch($s(n.map(o=>o.uuid))),this.dispatch(aa(r.map(({uuid:o})=>o))),this.enqueueRequest({description:"Delete asset type",method:h.DELETE,url:`/asset-types/${e}/`,blockers:[e],blocks:[]}).catch(o=>{throw this.dispatch(pa(c)),this.dispatch(gt(n)),this.dispatch(sa(r)),o})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset types",method:h.GET,url:"/asset-types/",queryParams:{organization:e},blockers:[],blocks:[]});return this.dispatch(yd(s)),s}}class jb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(ga(n));const r=this.enqueueRequest({description:"Create Category",method:h.POST,url:"/categories/",payload:v(n),blockers:[e.project],blocks:[n.uuid]});return[n,r]}update(e){const s=this.client.store.getState(),i=Pa(e.uuid)(s);if(!i)throw new Error(`Expected an existing category with uuid ${e.uuid}`);const c={...i,...e};this.dispatch(Id(c));const n=this.enqueueRequest({description:"Edit Category",method:h.PATCH,url:`/categories/${e.uuid}/`,payload:e,blockers:[e.uuid],blocks:[e.uuid]});return[c,n]}remove(e){const{store:s}=this.client,i=Pa(e)(s.getState());if(!i)throw new Error(`No category with uuid ${e} found in the store`);this.dispatch(Od(e));const c=this.enqueueRequest({description:"Delete Category",method:h.DELETE,url:`/categories/${i.uuid}/`,blockers:[i.uuid],blocks:[]});return c.catch(()=>{this.dispatch(ga(i))}),c}async refreshStore(e){const s=await this.enqueueRequest({description:"Get categories",method:h.GET,url:"/categories/",queryParams:{project__organization_owner:e},blocks:[],blockers:[]});return this.dispatch(Td(s)),s}}class qb extends De{constructor(){super(...arguments);S(this,"name","Document Attachment");S(this,"url","/document-attachments");S(this,"addAttachments",Md);S(this,"updateAttachments",jd);S(this,"removeAttachments",Vd);S(this,"removeAttachment",qd);S(this,"setAttachment",Ed);S(this,"selectAttachment",Dd)}buildOfflineAttachment(s){return T({file:URL.createObjectURL(s.file),file_sha1:s.file_sha1,created_by:s.created_by,file_name:s.file.name,file_type:s.file.type,submitted_at:s.submitted_at,description:s.description,document:s.modelUuid})}buildAttachmentPayload(s){return{...s,document:s.modelUuid}}async bulkAdd(s){var p;const{store:i}=this.client,c=(p=i.getState().userReducer.currentUser)==null?void 0:p.id,n=new Date().toISOString(),r=[],o=[],m={},u={};for(const A of s){const{documentUuid:y,file:b}=A,P=await this.getFilePayload(b);P.sha1 in m||(m[P.sha1]=P,u[P.sha1]=[]);const O=this.buildOfflineAttachment({file:b,file_sha1:P.sha1,submitted_at:n,created_by:c,description:"",modelUuid:y});r.push(O),o.push({uuid:O.uuid,file_name:O.file_name,file_sha1:O.file_sha1,file_extension:P.extension,description:O.description,document:y}),u[P.sha1].push(O.uuid)}this.dispatch(this.addAttachments(r));const l=this.enqueueRequest({description:"Attach files to document",method:h.POST,url:"/document-attachments/bulk/",payload:{submitted_at:n,attachments:o,files:Object.values(m)},blocks:r.map(A=>A.uuid),blockers:r.map(A=>A.file_sha1)});return l.then(({attachments:A,presigned_urls:y})=>{this.dispatch(this.updateAttachments(A));const b=this.processPresignedUrls(y);for(const[P,O]of Object.entries(b))O.then(()=>{const w=u[P];for(const q of w)this.makeReadable(q)})}).catch(()=>{this.dispatch(this.removeAttachments(r.map(A=>A.uuid)))}),[r,l.then(({attachments:A})=>A)]}async delete(s){return this._delete(s)}makeReadable(s){this.enqueueRequest({description:"Add attachment to AI assistant",method:h.PATCH,url:`/document-attachments/${s}/`,payload:{readable_to_assistant:!0},blockers:["index-document-attachment",s],blocks:["index-document-attachment"]})}async refreshStore(s){const i=await this.enqueueRequest({description:"Get document attachments",method:h.GET,url:"/document-attachments/",queryParams:{document__project__owner_organization:s},blocks:[],blockers:[]}),c=await this.enqueueRequest({description:"Get document attachments",method:h.GET,url:"/document-attachments/",queryParams:{document__organization:s},blocks:[],blockers:[]}),n=[...i,...c];return this.dispatch(wd(n)),n}}class Vb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch($d([n]));const r=this.enqueueRequest({description:"Create Document",method:h.POST,url:"/documents/",payload:v(n),queryParams:{parent_document:n.parent_document??void 0},blockers:n.parent_document?[n.parent_document]:[],blocks:[n.uuid]});return r.catch(()=>{this.dispatch(Ia([n.uuid]))}),[n,r]}update(e){const{store:s}=this.client,i=s.getState().documentsReducer.documents[e.uuid];if(!i)throw new Error(`attempting to update a document with uuid ${e.uuid} that does not exist in store.documents`);const c={...i,...e};this.dispatch(Ne([c]));const n=this.enqueueRequest({description:"Update Document",method:h.PATCH,url:`/documents/${e.uuid}/`,payload:e,blockers:[e.uuid],blocks:[e.uuid]});return n.catch(()=>{Ne([i])}),[c,n]}delete(e){const{store:s}=this.client,i=_t(s.getState()),c=Gd(e)(s.getState());if(!c)throw new Error(`attempting to delete a document with uuid ${e} that does not exist in store.documents`);const n=c.parent_document?i[c.parent_document]:void 0;this.dispatch(Ia([e]));const r=this.enqueueRequest({description:"Delete Document",method:h.DELETE,url:`/documents/${e}/`,blockers:[e],blocks:[]});return r.then(o=>{this.dispatch(Ne(o))}).catch(()=>{this.dispatch(Ne([c])),n&&this.dispatch(Ne([n]))}),r}async refreshStore(e){const s=this.enqueueRequest({description:"Get project documents",method:h.GET,url:"/documents/",queryParams:{project__owner_organization:e},blockers:[],blocks:[]}),i=this.enqueueRequest({description:"Get organization documents",method:h.GET,url:"/documents/",queryParams:{organization:e},blockers:[],blocks:[]}),c=[...await s,...await i];return this.dispatch(Bd(c)),c}}class zb extends R{async add(e,s){return this.enqueueRequest({description:"Add email domain to organization",method:h.POST,url:"/organization-email-domains/",payload:{email:s,organization:e},blockers:[e,"create-org"],blocks:[]})}async remove(e){return this.dispatch(Kd(e.uuid)),this.enqueueRequest({description:"Remove email domain from organization",method:h.DELETE,url:`/organization-email-domains/${e.uuid}/`,blockers:[e.domain],blocks:[]}).catch(s=>{throw this.dispatch(Wd(e)),s})}async refreshStore(e){const s=await this.enqueueRequest({description:"Fetch email domains for organization",method:h.GET,url:"/organization-email-domains/",queryParams:{organization:e},blockers:[e],blocks:[]});return this.dispatch(Hd(s)),s}}class Ub extends R{async getVerificationCode(e){return this.enqueueRequest({description:"Get verification code",method:h.GET,url:`/verification/email-verification/${e}/`,isAuthNeeded:!1,blockers:[],blocks:[]})}validateVerificationCode(e,s=void 0){return this.enqueueRequest({description:"Validate verification code",method:h.POST,url:`/verification/email-verification/${e}/`,isAuthNeeded:!1,payload:s,blockers:[],blocks:[]})}}const Bt={},dc=new Set;let $t=0,uc=0,oc=0;const Db=20;class Cb extends R{constructor(){super(...arguments);S(this,"host");S(this,"_dbPromise",pm.openDB("fileCache",1,{upgrade(s){s.createObjectStore("files")}}))}async renewUploadUrl(s){const i=await this.fetchCache(s);if(!i)throw new Error(`File with sha1 ${s} not found in cache`);const c=await Kt(i,s),n=await this.enqueueRequest({description:"Get S3 URL",method:h.GET,url:"/authentication/files/presigned-upload-url/",queryParams:{sha1:await Le(i),file_type:i.type,extension:i.name.split(".").pop(),size:i.size.toString()},blockers:[],blocks:[`s3-${c}`]});return"url"in n&&this.dispatch(xd({sha1:s,...n})),n}async addCache(s,i){if(dc.has(i))return;if(!s.type){const r=s.name.split("."),o=r[r.length-1];s=new File([s],s.name,{type:o})}if(!s.name||!s.size||!s.type)throw new Error("Cannot add files to cache that do not have a name, size and type.");const c=await this._dbPromise;!!await c.get("files",i)?(console.error("File already cached (this is unexpected at this point):",s.name,i),$t++):(await c.put("files",s,i),uc++),dc.add(i),oc++,oc%Db===0&&console.debug(`File cache summary: ${$t} hits and ${uc} misses, ${$t/($t+uc)*100}% hit rate over ${oc} calls to addCache.`)}async removeCache(s){await(await this._dbPromise).delete("files",s),dc.delete(s)}async fetchCache(s){return(await this._dbPromise).get("files",s)}async getOrRenewUploadUrl(s){const i=this.client.store.getState();return eu(s)(i)??await this.renewUploadUrl(s)}async uploadFileToS3(s){const i=await this.fetchCache(s);if(!i)throw new Error(`File with sha1 ${s} not found in cache`);const c=await Kt(i,s),n={file_name:i.name,file_sha1:s,file:c},r=await this.getOrRenewUploadUrl(s);if("warning"in r){if(r.warning==="already_uploaded")return[n,Promise.resolve(void 0).then()];throw new Error(r.warning)}const o=r.url,m=this.enqueueRequest({url:o,description:"Upload file",method:h.POST,isExternalUrl:!0,isAuthNeeded:!1,attachmentHash:s,blockers:[`s3-${c}`],blocks:[s],s3url:r});return[n,m]}async fetchFileFromUrl(s,i,c){const n=s.split("?")[0]??s,r=await this.fetchCache(i);if(r){if(!r.name)throw new Error("Cached file unexpectedly has no name.");return r}if(s.startsWith("blob:")){const l=await bc(s),p=new File([l],c??i,{type:l.type});return await this.addCache(p,i),p}let o=Bt[n],m=!0;o?m=!1:(o=new Promise(l=>{this.enqueueRequest({description:"Download file",method:h.GET,url:s,isExternalUrl:!0,isResponseBlob:!0,isAuthNeeded:!1,blockers:[i],blocks:[i]}).then(p=>{const A=new File([p],c??i,{type:p.type});l(A)})}),Bt[n]=o);let u;try{u=await o}catch(l){throw m&&l instanceof U&&delete Bt[n],l}if(m){const l=await Le(u);if(l!==i){const y=`The hash of the file returned from the server (${l}) does not match the
8
+ `)}catch(c){console.error("Failed to extract error message from response body",c)}}else typeof t.body=="string"&&(s=t.body);else t!=null&&t.text?s=t.text:e instanceof Error&&(s=e.message);return!s||s.length>nb?He:s}class U extends Error{constructor(s){super(He);S(this,"status");S(this,"response");S(this,"message");S(this,"options");const{response:i,innerError:c}=s;this.message=s.message??rb(i,c)??He,this.status=(i==null?void 0:i.status)??0,this.response=i,s.discard=s.discard??!1,this.options=s}}class db extends Qh{constructor(e){super(e)}}class R extends Qh{constructor(s,i){super(s);S(this,"auth");this.auth=i}}class ub extends R{async startConversation(e,s){return this.enqueueRequest({description:"Start agent conversation",method:h.POST,url:"/agents/prompt/",payload:{prompt:e,active_project:s},blockers:["prompt"],blocks:["prompt"]}).then(i=>(this.dispatch(Rc(i)),i))}async continueConversation(e,s,i){return this.enqueueRequest({description:"Prompt agent",method:h.POST,url:"/agents/prompt/",payload:{prompt:e,active_project:i},blockers:["prompt"],blocks:["prompt"],queryParams:{conversation_id:s}}).then(c=>{this.dispatch(wc(c))})}async fetchDetails(e){return this.enqueueRequest({description:"Get agent conversation",method:h.GET,url:`/agents/conversations/${e}/`,blockers:["conversation"],blocks:["conversation"]}).then(s=>{this.dispatch(vc(s))})}async rate(e,s){return this.enqueueRequest({description:"Rate agent response",method:h.PUT,url:`/agents/responses/${e}/rate/`,payload:{rating:s},blockers:["rate"],blocks:["rate"]})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get agent conversation history",method:h.GET,url:"/agents/conversations/",queryParams:{project:e},blockers:["agent-conversations"],blocks:["agent-conversations"]});return this.dispatch(_c(s)),s}}class j extends R{getNumberOfAttachmentsWithSha1(e){const{issueAttachmentReducer:s,assetAttachmentReducer:i,assetTypeAttachmentReducer:c,documentAttachmentReducer:n,projectAttachmentReducer:r,formRevisionAttachmentReducer:o,formSubmissionAttachmentReducer:m,geoImageReducer:u,assetTypeFieldsAttachmentReducer:l,assetTypeFieldValuesAttachmentReducer:p,issueTypeFieldsAttachmentReducer:A,issueTypeFieldValuesAttachmentReducer:y}=this.client.store.getState();return[].concat(Object.values(s.instances),Object.values(i.instances),Object.values(c.instances),Object.values(n.instances),Object.values(r.instances),Object.values(o.instances),Object.values(m.instances),Object.values(u.instances),Object.values(l.instances),Object.values(p.instances),Object.values(A.instances),Object.values(y.instances)).filter(P=>P.file_sha1===e).length}processPresignedUrls(e){const s={};for(const[i,c]of Object.entries(e))s[i]=this.enqueueRequest({url:c.url,description:"Upload file to S3",method:h.POST,isExternalUrl:!0,isAuthNeeded:!1,attachmentHash:i,blockers:[`s3-${c.fields.key}`],blocks:[i],s3url:c});return s}async getFilePayload(e){const s=await Le(e),i={sha1:s,file_type:e.type,extension:e.name.split(".").pop(),size:e.size};return await this.client.files.addCache(e,s),i}}class De extends j{async _bulkAdd(e){var u;const{store:s}=this.client,i=(u=s.getState().userReducer.currentUser)==null?void 0:u.id,c=new Date().toISOString(),n=[],r=[],o={};for(const l of e){const{modelUuid:p,file:A}=l,y=await this.getFilePayload(A);y.sha1 in o||(o[y.sha1]=y);const b=this.buildOfflineAttachment({file:A,file_sha1:y.sha1,submitted_at:c,created_by:i,description:"",modelUuid:p});n.push(b),r.push(this.buildAttachmentPayload({uuid:b.uuid,file_name:b.file_name,file_sha1:b.file_sha1,file_extension:y.extension,description:b.description,modelUuid:p}))}this.dispatch(this.addAttachments(n));const m=this.enqueueRequest({description:`Add ${this.name}`,method:h.POST,url:`${this.url}/bulk/`,payload:{submitted_at:c,attachments:r,files:Object.values(o)},blocks:n.map(l=>l.uuid),blockers:n.map(l=>l.file_sha1)});return m.then(({attachments:l,presigned_urls:p})=>{this.dispatch(this.updateAttachments(l)),this.processPresignedUrls(p)}).catch(()=>{this.dispatch(this.removeAttachments(n.map(l=>l.uuid)))}),[n,m.then(({attachments:l})=>l)]}async _delete(e){const{store:s}=this.client,i=this.selectAttachment(e)(s.getState());if(!i)throw new Error(`Attempting to delete attachment with uuid ${e} that does not exist in the store`);this.dispatch(this.removeAttachment(i.uuid));const c=this.enqueueRequest({description:`Delete ${this.name}`,method:h.DELETE,url:`${this.url}/${e}/`,blockers:[e],blocks:[]});return c.then(()=>{this.getNumberOfAttachmentsWithSha1(i.file_sha1)===0&&this.client.files.removeCache(i.file_sha1)}).catch(()=>{this.dispatch(this.setAttachment(i))}),c}}class ob extends De{constructor(){super(...arguments);S(this,"name","Asset Attachment");S(this,"url","/asset-attachments");S(this,"initializeAttachments",Xt);S(this,"addAttachments",Qt);S(this,"updateAttachments",qc);S(this,"removeAttachments",xt);S(this,"removeAttachment",Vc);S(this,"setAttachment",jc);S(this,"selectAttachment",Dc)}buildOfflineAttachment(s){return T({file:URL.createObjectURL(s.file),file_sha1:s.file_sha1,created_by:s.created_by,file_name:s.file.name,file_type:s.file.type,submitted_at:s.submitted_at,description:s.description,asset:s.modelUuid})}buildAttachmentPayload(s){return{...s,asset:s.modelUuid}}async bulkAdd(s){return this._bulkAdd(s.map(i=>({modelUuid:i.assetUuid,file:i.file})))}async delete(s){return this._delete(s)}async refreshStore(s){const i=await this.enqueueRequest({description:"Get asset attachments",method:h.GET,url:`${this.url}/`,queryParams:{asset__project:s},blocks:[],blockers:[]});return this.dispatch(Xt(i)),i}}class lb extends De{constructor(){super(...arguments);S(this,"name","Asset Procedure Attachment");S(this,"url","/asset-procedure-attachments");S(this,"addAttachments",Gc);S(this,"updateAttachments",Nc);S(this,"removeAttachments",Wc);S(this,"removeAttachment",Hc);S(this,"setAttachment",Lc);S(this,"selectAttachment",Jc)}buildOfflineAttachment(s){return T({file:URL.createObjectURL(s.file),file_sha1:s.file_sha1,created_by:s.created_by,file_name:s.file.name,file_type:s.file.type,submitted_at:s.submitted_at,description:s.description,asset_procedure:s.modelUuid})}buildAttachmentPayload(s){return{...s,asset_procedure:s.modelUuid}}async bulkAdd(s){return this._bulkAdd(s.map(i=>({modelUuid:i.assetProcedureUuid,file:i.file})))}async delete(s){return this._delete(s)}async refreshStore(s){const i=await this.enqueueRequest({description:"Get asset procedure attachments",method:h.GET,url:`${this.url}/`,queryParams:{asset_procedure__organization:s},blocks:[],blockers:[]});return this.dispatch($c(i)),i}}class hb extends j{async bulkAdd(e){var m;const s=new Date().toISOString(),i=(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,c={},n=[],r=[];for(const u of e){const{fieldsRevisionUuid:l,fieldIdentifier:p,file:A}=u,y=await this.getFilePayload(A);y.sha1 in c||(c[y.sha1]=y);const b=T({file:URL.createObjectURL(A),file_type:A.type,file_name:A.name,file_sha1:y.sha1,created_by:i,fields_revision:l,submitted_at:s,field_identifier:p});n.push(b);const P={uuid:b.uuid,file_name:A.name,field_identifier:p,file_extension:y.extension,file_sha1:y.sha1,fields_revision:l};r.push(P)}this.dispatch(xc(n));const o=this.enqueueRequest({description:"Add asset procedure fields attachments",method:h.POST,url:"/asset-procedure-fields-attachments/bulk/",payload:{submitted_at:s,attachments:r,files:Object.values(c)},blockers:n.map(u=>u.fields_revision),blocks:n.map(u=>u.uuid)});return o.then(u=>{this.processPresignedUrls(u.presigned_urls),this.dispatch(en(u.attachments))}).catch(()=>{this.dispatch(tn(n.map(u=>u.uuid)))}),[n,o.then(({attachments:u})=>u)]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure fields attachments",method:h.GET,url:"/asset-procedure-fields-attachments/",queryParams:{fields_revision__asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(Qc(s)),s}}class mb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(dn(n));const r=this.enqueueRequest({description:"Add Asset Procedure Fields",method:h.POST,url:"/asset-procedure-fields/",payload:v(n),blockers:[n.asset_procedure],blocks:[n.uuid]});return r.then(m=>{this.dispatch(un(m))}).catch(m=>{throw this.dispatch(on(n.uuid)),m}),[n,r]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get Asset Procedure Fields",method:h.GET,url:"/asset-procedure-fields/",queryParams:{asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(rn(s)),s}}function ke(t,e){const s=[];let i=0;const c=t.length;for(;i<c;)s.push(t.slice(i,i+=e));return s}class pb extends j{async bulkAdd(e,s){var u;const i=new Date().toISOString(),c=(u=this.client.store.getState().userReducer.currentUser)==null?void 0:u.id,n=ke(e,s??e.length),r=[],o=[];for(const l of n){const p={},A=[];for(const y of l){const{fieldValuesUuid:b,fieldIdentifier:P,file:O}=y,w=await this.getFilePayload(O);w.sha1 in p||(p[w.sha1]=w);const q=T({file:URL.createObjectURL(O),file_type:O.type,file_name:O.name,file_sha1:w.sha1,created_by:c,field_values:b,submitted_at:i,field_identifier:P});r.push(q);const Ke={uuid:q.uuid,file_name:O.name,file_sha1:w.sha1,file_extension:w.extension,field_identifier:P,field_values:b};A.push(Ke)}o.push({submitted_at:i,attachments:A,files:Object.values(p)})}this.dispatch(ht(r));const m=o.map(l=>this.enqueueRequest({description:"Add asset procedure field values attachments",method:h.POST,url:"/asset-procedure-field-values-attachments/bulk/",payload:l,blockers:l.attachments.map(p=>p.field_values),blocks:l.attachments.map(p=>p.uuid)}));return Promise.all(m).then(l=>{for(const A of l)this.processPresignedUrls(A.presigned_urls);const p=l.flatMap(A=>A.attachments);this.dispatch(An(p))}).catch(l=>{throw this.dispatch(mt(r.map(p=>p.uuid))),l}),[r,m.map(l=>l.then(({attachments:p})=>p))]}async bulkDelete(e){const{store:s}=this.client,i=s.getState(),c=fn(e)(i);this.dispatch(mt(e));try{await this.enqueueRequest({description:"Delete asset procedure field values attachments",method:h.DELETE,url:"/asset-procedure-field-values-attachments/bulk/",payload:{uuids:e},blockers:e,blocks:[]})}catch(n){throw this.dispatch(ht(c)),n}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure field values attachments",method:h.GET,url:"/asset-procedure-field-values-attachments/",queryParams:{field_values__asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(pn(s)),s}}class Ab extends R{add(e){var r;const{store:s}=this.client,i=s.getState(),c=T({...e,created_by:(r=i.userReducer.currentUser)==null?void 0:r.id,submitted_at:new Date().toISOString()}),n=this.enqueueRequest({description:"Add asset procedure field values",method:h.POST,url:"/asset-procedure-field-values/",payload:v(c),blockers:[e.asset,e.fields_revision,e.asset_procedure_instance],blocks:[c.uuid]});return this.dispatch(rs(c)),n.then(o=>(this.dispatch(Je(o)),o)).catch(()=>{this.dispatch(ds(c.uuid))}),[c,n]}bulkAdd(e,s){var m;const i=new Date().toISOString(),c=[],n=ke(e.payloads,s??e.payloads.length),r=[];for(const u of n){const l=[];for(const p of u){const A=T({...p,values:p.values,created_by:(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,submitted_at:i});c.push(A),l.push({uuid:A.uuid,asset:p.asset,fields_revision:p.fields_revision,asset_procedure_instance:p.asset_procedure_instance,published_at:p.published_at,values:A.values})}r.push({submitted_at:i,values:e.values,field_values:l})}this.dispatch(Fn(c));const o=[];for(const u of r){const l=u.field_values.map(P=>P.asset),p=u.field_values.map(P=>P.fields_revision),A=u.field_values.map(P=>P.asset_procedure_instance),y=u.field_values.map(P=>P.uuid),b=this.enqueueRequest({description:"Bulk add asset procedure field values",method:h.POST,url:"/asset-procedure-field-values/bulk/",payload:u,blockers:[...l,...p,...A],blocks:y});o.push(b)}return Promise.all(o).then(u=>{this.dispatch(Tn(u.flat()))}).catch(()=>{this.dispatch(In(c.map(u=>u.uuid)))}),[c,o]}update(e){const{store:s}=this.client,i=s.getState(),c=os(e.uuid)(i);if(!c)throw new Error(`Expected AssetProcedureFieldValues with uuid ${e.uuid} to exist`);const n={...c,...e};this.dispatch(Je(n));const r=this.enqueueRequest({description:"Update asset procedure field values",method:h.PATCH,url:`/asset-procedure-field-values/${e.uuid}/`,payload:e,blockers:[n.fields_revision,n.asset,n.asset_procedure_instance],blocks:[n.uuid]});return r.then(o=>{this.dispatch(Je(o))}).catch(()=>{this.dispatch(Je(c))}),[n,r]}async delete(e){const{store:s}=this.client,i=s.getState(),c=os(e)(i);if(!c)throw new Error(`Expected submission with uuid ${e} to exist`);const n=Sn(e)(i);this.dispatch(ds(e)),this.dispatch(mt(n.map(r=>r.uuid)));try{await this.enqueueRequest({description:"Delete asset procedure field values",method:h.DELETE,url:`/asset-procedure-field-values/${e}/`,blockers:[e],blocks:[]})}catch(r){throw this.dispatch(rs(c)),this.dispatch(ht(n)),r}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure field values",method:h.GET,url:"/asset-procedure-field-values/",queryParams:{asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(Pn(s)),s}}class yb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(hs(n));const r=this.enqueueRequest({description:"Create asset procedure instance",method:h.POST,url:"/asset-procedure-instances/",payload:v(n),blockers:[e.asset_procedure,e.asset_type],blocks:[n.uuid]});return r.then(m=>{this.dispatch(Ze(m))}).catch(()=>{this.dispatch(ms(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=ys(e.uuid)(s.getState());if(!i)throw new Error(`Expected asset procedure instance with uuid ${e.uuid} to exist`);const c={...i,...e};this.dispatch(Ze(c));const n=this.enqueueRequest({description:"Update asset procedure instance",method:h.PATCH,url:`/asset-procedure-instances/${e.uuid}/`,payload:e,blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(Ze(r))}).catch(()=>{this.dispatch(Ze(i))}),[c,n]}async remove(e){const{store:s}=this.client,i=s.getState(),c=ys(e)(i);if(!c)throw new Error(`Expected asset procedure instance with uuid ${e} to exist`);return this.dispatch(ms(e)),this.enqueueRequest({description:"Delete asset procedure instance",method:h.DELETE,url:`/asset-procedure-instances/${e}/`,blockers:[e],blocks:[]}).catch(n=>{throw this.dispatch(hs(c)),n})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure instances",method:h.GET,url:"/asset-procedure-instances/",queryParams:{project:e},blockers:[],blocks:[]});return this.dispatch(vn(s)),s}}class fb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Ss(n));const r=this.enqueueRequest({description:"Create asset procedure",method:h.POST,url:"/asset-procedures/",payload:v(n),blockers:[],blocks:[n.uuid]});return r.then(m=>{this.dispatch(Xe(m))}).catch(()=>{this.dispatch(gs(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=Ps(e.uuid)(s.getState());if(!i)throw new Error(`Expected asset procedure with uuid ${e.uuid} to exist`);const c={...i,...e};this.dispatch(Xe(c));const n=this.enqueueRequest({description:"Update asset procedure",method:h.PATCH,url:`/asset-procedures/${e.uuid}/`,payload:e,blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(Xe(r))}).catch(()=>{this.dispatch(Xe(i))}),[c,n]}async remove(e){const{store:s}=this.client,i=s.getState(),c=Ps(e)(i);if(!c)throw new Error(`Expected asset procedure with uuid ${e} to exist`);const n=En(e)(i);return this.dispatch(gs(e)),this.dispatch(Mn(n.map(r=>r.uuid))),this.enqueueRequest({description:"Delete asset procedure",method:h.DELETE,url:`/asset-procedures/${e}/`,blockers:[e],blocks:[]}).catch(r=>{throw this.dispatch(Ss(c)),this.dispatch(wn(n)),r})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedures",method:h.GET,url:"/asset-procedures/",queryParams:{organization:e},blockers:[],blocks:[]});return this.dispatch(Vn(s)),s}}class Sb extends j{async bulkAdd(e){var m;const s=new Date().toISOString(),i=(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,c={},n=[],r=[];for(const u of e){const{fieldsRevisionUuid:l,fieldIdentifier:p,file:A}=u,y=await this.getFilePayload(A);y.sha1 in c||(c[y.sha1]=y);const b=T({file:URL.createObjectURL(A),file_type:A.type,file_name:A.name,file_sha1:y.sha1,created_by:i,fields_revision:l,submitted_at:s,field_identifier:p});n.push(b);const P={uuid:b.uuid,file_name:A.name,field_identifier:p,file_extension:y.extension,file_sha1:y.sha1,fields_revision:l};r.push(P)}this.dispatch(kn(n));const o=this.enqueueRequest({description:"Add asset procedure step fields attachments",method:h.POST,url:"/asset-procedure-step-fields-attachments/bulk/",payload:{submitted_at:s,attachments:r,files:Object.values(c)},blockers:n.map(u=>u.fields_revision),blocks:n.map(u=>u.uuid)});return o.then(u=>{this.processPresignedUrls(u.presigned_urls),this.dispatch(Bn(u.attachments))}).catch(()=>{this.dispatch($n(n.map(u=>u.uuid)))}),[n,o.then(({attachments:u})=>u)]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure step fields attachments",method:h.GET,url:"/asset-procedure-step-fields-attachments/",queryParams:{fields_revision__asset_procedure_step__organization:e},blockers:[],blocks:[]});return this.dispatch(Cn(s)),s}}class gb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Is(n));const r=this.enqueueRequest({description:"Add Asset Procedure Step Fields",method:h.POST,url:"/asset-procedure-step-fields/",payload:v(n),blockers:[n.asset_procedure_step],blocks:[n.uuid]});return r.then(m=>{this.dispatch(Qe(m))}).catch(m=>{throw this.dispatch(Os(n.uuid)),m}),[n,r]}update(e){const{store:s}=this.client,i=s.getState().assetProcedureStepFieldsReducer.instances[e.uuid];if(!i)throw new Error(`AssetProcedureStepFields with uuid ${e.uuid} not found`);const c={...i,...e};this.dispatch(Qe(c));const n=this.enqueueRequest({description:"Update Asset Procedure Step Fields",method:h.PATCH,url:`/asset-procedure-step-fields/${i.uuid}/`,payload:e,blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(Qe(r))}).catch(r=>{throw this.dispatch(Qe(i)),r}),[c,n]}delete(e){const{store:s}=this.client,i=s.getState().assetProcedureStepFieldsReducer.instances[e];if(!i)throw new Error(`AssetProcedureStepFields with uuid ${e} not found`);this.dispatch(Os(e));const c=this.enqueueRequest({description:"Delete Asset Procedure Step Fields",method:h.DELETE,url:`/asset-procedure-step-fields/${e}/`,blockers:[e],blocks:[e]});return c.catch(n=>{throw this.dispatch(Is(i)),n}),c}async refreshStore(e){const s=await this.enqueueRequest({description:"Get Asset Procedure Step Fields",method:h.GET,url:"/asset-procedure-step-fields/",queryParams:{asset_procedure_step__asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(Wn(s)),s}}class bb extends j{async bulkAdd(e,s){var u;const i=new Date().toISOString(),c=(u=this.client.store.getState().userReducer.currentUser)==null?void 0:u.id,n=ke(e,s??e.length),r=[],o=[];for(const l of n){const p={},A=[];for(const y of l){const{fieldValuesUuid:b,fieldIdentifier:P,file:O}=y,w=await this.getFilePayload(O);w.sha1 in p||(p[w.sha1]=w);const q=T({file:URL.createObjectURL(O),file_type:O.type,file_name:O.name,file_sha1:w.sha1,created_by:c,field_values:b,submitted_at:i,field_identifier:P});r.push(q);const Ke={uuid:q.uuid,file_name:O.name,file_sha1:w.sha1,file_extension:w.extension,field_identifier:P,field_values:b};A.push(Ke)}o.push({submitted_at:i,attachments:A,files:Object.values(p)})}this.dispatch(pt(r));const m=o.map(l=>this.enqueueRequest({description:"Add asset procedure step field values attachments",method:h.POST,url:"/asset-procedure-step-field-values-attachments/bulk/",payload:l,blockers:l.attachments.map(p=>p.field_values),blocks:l.attachments.map(p=>p.uuid)}));return Promise.all(m).then(l=>{for(const A of l)this.processPresignedUrls(A.presigned_urls);const p=l.flatMap(A=>A.attachments);this.dispatch(Zn(p))}).catch(l=>{throw this.dispatch(At(r.map(p=>p.uuid))),l}),[r,m.map(l=>l.then(({attachments:p})=>p))]}async bulkDelete(e){const{store:s}=this.client,i=s.getState(),c=Qn(e)(i);this.dispatch(At(e));try{await this.enqueueRequest({description:"Delete asset procedure step field values attachments",method:h.DELETE,url:"/asset-procedure-step-field-values-attachments/bulk/",payload:{uuids:e},blockers:e,blocks:[]})}catch(n){throw this.dispatch(pt(c)),n}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure step field values attachments",method:h.GET,url:"/asset-procedure-step-field-values-attachments/",queryParams:{field_values__asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(Jn(s)),s}}class Pb extends R{add(e){var r;const{store:s}=this.client,i=s.getState(),c=T({...e,created_by:(r=i.userReducer.currentUser)==null?void 0:r.id,submitted_at:new Date().toISOString()}),n=this.enqueueRequest({description:"Add asset procedure step field values",method:h.POST,url:"/asset-procedure-step-field-values/",payload:v(c),blockers:[e.asset,e.fields_revision,e.asset_procedure_instance],blocks:[c.uuid]});return this.dispatch(Es(c)),n.then(o=>(this.dispatch(xe(o)),o)).catch(()=>{this.dispatch(js(c.uuid))}),[c,n]}bulkAdd(e,s){var m;const i=new Date().toISOString(),c=[],n=ke(e.payloads,s??e.payloads.length),r=[];for(const u of n){const l=[];for(const p of u){const A=T({...p,values:p.values,created_by:(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,submitted_at:i});c.push(A),l.push({uuid:A.uuid,asset:p.asset,fields_revision:p.fields_revision,asset_procedure_instance:p.asset_procedure_instance,asset_procedure_step:p.asset_procedure_step,published_at:p.published_at,values:A.values})}r.push({submitted_at:i,values:e.values,field_values:l})}this.dispatch(ar(c));const o=[];for(const u of r){const l=u.field_values.map(P=>P.asset),p=u.field_values.map(P=>P.fields_revision),A=u.field_values.map(P=>P.asset_procedure_instance),y=u.field_values.map(P=>P.uuid),b=this.enqueueRequest({description:"Bulk add asset procedure step field values",method:h.POST,url:"/asset-procedure-step-field-values/bulk/",payload:u,blockers:[...l,...p,...A],blocks:y});o.push(b)}return Promise.all(o).then(u=>{this.dispatch(ir(u.flat()))}).catch(()=>{this.dispatch(cr(c.map(u=>u.uuid)))}),[c,o]}update(e){const{store:s}=this.client,i=s.getState(),c=qs(e.uuid)(i);if(!c)throw new Error(`Expected AssetProcedureStepFieldValues with uuid ${e.uuid} to exist`);const n={...c,...e};this.dispatch(xe(n));const r=this.enqueueRequest({description:"Update asset procedure step field values",method:h.PATCH,url:`/asset-procedure-step-field-values/${e.uuid}/`,payload:e,blockers:[n.fields_revision,n.asset,n.asset_procedure_instance],blocks:[n.uuid]});return r.then(o=>{this.dispatch(xe(o))}).catch(()=>{this.dispatch(xe(c))}),[n,r]}async delete(e){const{store:s}=this.client,i=s.getState(),c=qs(e)(i);if(!c)throw new Error(`Expected submission with uuid ${e} to exist`);const n=xn(e)(i);this.dispatch(js(e)),this.dispatch(At(n.map(r=>r.uuid)));try{await this.enqueueRequest({description:"Delete asset procedure step field values",method:h.DELETE,url:`/asset-procedure-step-field-values/${e}/`,blockers:[e],blocks:[]})}catch(r){throw this.dispatch(Es(c)),this.dispatch(pt(n)),r}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure step field values",method:h.GET,url:"/asset-procedure-step-field-values/",queryParams:{asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(sr(s)),s}}class Fb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(zs(n));const r=this.enqueueRequest({description:"Create asset procedure step",method:h.POST,url:"/asset-procedure-steps/",payload:v(n),blockers:[n.asset_procedure],blocks:[n.uuid]});return r.then(m=>{this.dispatch(ft(m))}).catch(()=>{this.dispatch(Us(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=Ds(e.uuid)(s.getState());if(!i)throw new Error(`No asset procedure step with uuid ${e.uuid} found in the store`);const c={...i,...e};this.dispatch(ft(c));const n=this.enqueueRequest({description:"Update asset procedure step",method:h.PATCH,url:`/asset-procedure-steps/${i.uuid}/`,payload:{name:e.name,description:e.description,priority:e.order,color:e.color},blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(ft(r))}).catch(()=>{this.dispatch(or(i))}),[c,n]}async delete(e){const{store:s}=this.client,i=s.getState(),c=Ds(e)(i);if(!c)throw new Error(`No asset procedure step with uuid ${e} found in the store`);return this.dispatch(Us(e)),this.enqueueRequest({description:"Delete asset stage",method:h.DELETE,url:`/asset-stages/${e}/`,blockers:[e],blocks:[]}).catch(n=>{throw this.dispatch(zs(c)),n})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset procedure steps",method:h.GET,url:"/asset-procedure-steps/",queryParams:{asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(ur(s)),s}}class Tb extends R{add(e){var o;const{store:s}=this.client;if(!e.canvas_marker&&!e.geo_marker)throw new Error("Asset must have either a canvas_marker or geo_marker");const i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(ks(n));const r=this.enqueueRequest({description:"Create asset",method:h.POST,url:"/assets/",payload:v(n),blockers:[n.asset_type],blocks:[n.uuid]});return r.then(m=>{this.dispatch(et(m))}).catch(()=>{this.dispatch(Bs(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=Ns(e.uuid)(s.getState());if(!i)throw new Error(`No asset with uuid ${e.uuid} found in the store`);const c={...i,...e};if(!c.canvas_marker&&!c.geo_marker)throw new Error("Asset must have either a canvas_marker or geo_marker");this.dispatch(et(c));const n=this.enqueueRequest({description:"Edit asset",method:h.PATCH,url:`/assets/${e.uuid}/`,payload:e,blockers:[e.uuid],blocks:[e.uuid]});return n.then(r=>{this.dispatch(et(r))}).catch(()=>{this.dispatch(et(i))}),[c,n]}async delete(e){const{store:s}=this.client,i=s.getState(),c=Ns(e)(i);if(!c)throw new Error(`No asset with uuid ${e} found in the store`);const n=Cc(e)(i),r=Vu(e)(i),o=Qu(e)(i);if(this.dispatch(Bs(e)),n.length>0){const m=n.map(({uuid:u})=>u);this.dispatch(xt(m))}if(r.length>0){const m=r.map(({uuid:u})=>u);this.dispatch(jt(m))}if(o.length>0){const m=o.map(({uuid:u})=>u);this.dispatch(Za(m))}return this.enqueueRequest({description:"Delete asset",method:h.DELETE,url:`/assets/${e}/`,blockers:[e],blocks:[]}).catch(m=>{throw this.dispatch(ks(c)),this.dispatch(Qt(n)),this.dispatch(Et(r)),this.dispatch(Ya(o)),m})}bulkAdd(e,s,i,c){const n=new Date().toISOString(),r=Ge.v4(),o=ke(e,c).map(l=>{const p=l.map(A=>T(A));return{batchId:Ge.v4(),payload:{transaction_id:r,submitted_at:n,asset_type:s,project:i,assets:p}}}),m=[];let u=null;for(const l of o){const{batchId:p,payload:A}=l,y=A.assets.map(w=>w.uuid),b=[s];u&&b.push(u);const P=y;P.push(p);const O=this.enqueueRequest({description:"Batch create assets",method:h.POST,url:"/assets/bulk/",payload:A,blockers:b,blocks:P});u=l.batchId,m.push(O)}return Promise.all(m).then(l=>{const p=l.flat();this.dispatch(gt(p))}),m}async bulkDelete(e){const{store:s}=this.client,i=s.getState(),c=yr(e)(i);this.dispatch($s(e));try{await this.enqueueRequest({description:"Bulk delete assets",method:h.DELETE,url:"/assets/bulk/",payload:{uuids:e},blockers:e,blocks:[]})}catch(n){throw this.dispatch(gt(c)),n}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get assets",method:h.GET,url:"/assets/",queryParams:{project:e},blockers:[],blocks:[]});return this.dispatch(pr(s)),s}}class Ib extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Ws(n));const r=this.enqueueRequest({description:"Add asset stage completion",method:h.POST,url:"/asset-stage-completions/",payload:v(n),blockers:[e.asset,e.stage],blocks:[n.uuid]});return r.then(m=>{this.dispatch(br(m))}).catch(()=>{this.dispatch(Ys(n.uuid))}),[n,r]}delete(e){const{store:s}=this.client,i=Tr(e)(s.getState());if(!i)throw new Error(`Expected asset stage completion with uuid ${e} to exist`);this.dispatch(Ys(e));const c=this.enqueueRequest({description:"Delete asset stage completion",method:h.DELETE,url:`/asset-stage-completions/${e}/`,blockers:[e],blocks:[]});return c.catch(()=>{this.dispatch(Ws(i))}),c}bulkAdd(e){var u;const{store:s}=this.client,i=new Date().toISOString(),c=(u=s.getState().userReducer.currentUser)==null?void 0:u.id,n=e.map(l=>T(l)),r=n.map(l=>({...l,created_by:c,submitted_at:i})),o=r.map(({uuid:l})=>l);this.dispatch(Ks(r));const m=this.enqueueRequest({description:"Bulk create asset stage completions",method:h.POST,url:"/asset-stage-completions/bulk/",payload:{submitted_at:i,completions:n},blockers:[...e.map(l=>l.asset_procedure_instance),...e.map(l=>l.stage),...e.map(l=>l.asset)],blocks:o});return m.then(l=>{this.dispatch(Pr(l))}).catch(()=>{this.dispatch(Js(o))}),[r,m]}bulkDelete(e){const{store:s}=this.client,i=Ir(e)(s.getState());this.dispatch(Js(e));const c=this.enqueueRequest({description:"Deleting asset stage completions",method:h.DELETE,url:"/asset-stage-completions/bulk/",payload:{uuids:e},blockers:e,blocks:[]});return c.catch(()=>{this.dispatch(Ks(i))}),c}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset stage completions",method:h.GET,url:"/asset-stage-completions/",queryParams:{asset_procedure_instance__project:e},blockers:[],blocks:[]});return this.dispatch(gr(s)),s}}class Ob extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Qs(n));const r=this.enqueueRequest({description:"Create asset",method:h.POST,url:"/asset-stages/",payload:v(n),blockers:[n.asset_procedure],blocks:[n.uuid]});return r.then(m=>{this.dispatch(bt(m))}).catch(()=>{this.dispatch(xs(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=ea(e.uuid)(s.getState());if(!i)throw new Error(`No asset stage with uuid ${e.uuid} found in the store`);const c={...i,...e};this.dispatch(bt(c));const n=this.enqueueRequest({description:"Update asset stage",method:h.PATCH,url:`/asset-stages/${i.uuid}/`,payload:e,blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(bt(r))}).catch(()=>{this.dispatch(Rr(i))}),[c,n]}async delete(e){const{store:s}=this.client,i=s.getState(),c=ea(e)(i);if(!c)throw new Error(`No asset stage with uuid ${e} found in the store`);return this.dispatch(xs(e)),this.enqueueRequest({description:"Delete asset stage",method:h.DELETE,url:`/asset-stages/${e}/`,blockers:[e],blocks:[]}).catch(n=>{throw this.dispatch(Qs(c)),n})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset stages",method:h.GET,url:"/asset-stages/",queryParams:{asset_procedure__organization:e},blockers:[],blocks:[]});return this.dispatch(_r(s)),s}}class _b extends De{constructor(){super(...arguments);S(this,"name","Asset Type Attachment");S(this,"url","/asset-type-attachments");S(this,"addAttachments",sa);S(this,"updateAttachments",qr);S(this,"removeAttachments",aa);S(this,"removeAttachment",Vr);S(this,"setAttachment",jr);S(this,"selectAttachment",Dr)}buildOfflineAttachment(s){return T({file:URL.createObjectURL(s.file),file_sha1:s.file_sha1,created_by:s.created_by,file_name:s.file.name,file_type:s.file.type,submitted_at:s.submitted_at,description:s.description,asset_type:s.modelUuid})}buildAttachmentPayload(s){return{...s,asset_type:s.modelUuid}}async bulkAdd(s){return this._bulkAdd(s.map(i=>({modelUuid:i.assetTypeUuid,file:i.file})))}async delete(s){return this._delete(s)}async refreshStore(s){const i=await this.enqueueRequest({description:"Get asset type attachments",method:h.GET,url:`${this.url}/`,queryParams:{asset_type__organization:s},blocks:[],blockers:[]});return this.dispatch(Er(i)),i}}class Rb extends j{async bulkAdd(e){var m;const s=new Date().toISOString(),i=(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,c={},n=[],r=[];for(const u of e){const{fieldsRevisionUuid:l,fieldIdentifier:p,file:A}=u,y=await this.getFilePayload(A);y.sha1 in c||(c[y.sha1]=y);const b=T({file:URL.createObjectURL(A),file_type:A.type,file_name:A.name,file_sha1:y.sha1,created_by:i,fields_revision:l,submitted_at:s,field_identifier:p});n.push(b);const P={uuid:b.uuid,file_name:A.name,field_identifier:p,file_extension:y.extension,file_sha1:y.sha1,fields_revision:l};r.push(P)}this.dispatch(Gr(n));const o=this.enqueueRequest({description:"Add asset type fields attachments",method:h.POST,url:"/asset-type-fields-attachments/bulk/",payload:{submitted_at:s,attachments:r,files:Object.values(c)},blockers:n.map(u=>u.fields_revision),blocks:n.map(u=>u.uuid)});return o.then(u=>{this.processPresignedUrls(u.presigned_urls),this.dispatch(Lr(u.attachments))}).catch(()=>{this.dispatch(Nr(n.map(u=>u.uuid)))}),[n,o.then(({attachments:u})=>u)]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset type fields attachments",method:h.GET,url:"/asset-type-fields-attachments/",queryParams:{fields_revision__asset_type__organization:e},blockers:[e],blocks:[]});return this.dispatch($r(s)),s}}class vb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(Zr(n));const r=this.enqueueRequest({description:"Add Asset Type Fields",method:h.POST,url:"/asset-type-fields/",payload:v(n),blockers:[n.asset_type],blocks:[n.uuid]});return r.then(m=>{this.dispatch(Xr(m))}).catch(m=>{throw this.dispatch(Qr(n.uuid)),m}),[n,r]}async refreshStore(e){const s=await this.enqueueRequest({description:"Get Asset Type Fields",method:h.GET,url:"/asset-type-fields/",queryParams:{asset_type__organization:e},blockers:[],blocks:[]});return this.dispatch(Jr(s)),s}}class wb extends j{async bulkAdd(e,s){var u;const i=new Date().toISOString(),c=(u=this.client.store.getState().userReducer.currentUser)==null?void 0:u.id,n=ke(e,s??e.length),r=[],o=[];for(const l of n){const p={},A=[];for(const y of l){const{fieldValuesUuid:b,fieldIdentifier:P,file:O}=y,w=await this.getFilePayload(O);w.sha1 in p||(p[w.sha1]=w);const q=T({file:URL.createObjectURL(O),file_type:O.type,file_name:O.name,file_sha1:w.sha1,created_by:c,field_values:b,submitted_at:i,field_identifier:P});r.push(q);const Ke={uuid:q.uuid,file_name:O.name,file_sha1:w.sha1,file_extension:w.extension,field_identifier:P,field_values:b};A.push(Ke)}o.push({submitted_at:i,attachments:A,files:Object.values(p)})}this.dispatch(Tt(r));const m=o.map(l=>this.enqueueRequest({description:"Add asset type field values attachments",method:h.POST,url:"/asset-type-field-values-attachments/bulk/",payload:l,blockers:l.attachments.map(p=>p.field_values),blocks:l.attachments.map(p=>p.uuid)}));return Promise.all(m).then(l=>{for(const A of l)this.processPresignedUrls(A.presigned_urls);const p=l.flatMap(A=>A.attachments);this.dispatch(ad(p))}).catch(l=>{throw this.dispatch(It(r.map(p=>p.uuid))),l}),[r,m.map(l=>l.then(({attachments:p})=>p))]}async bulkDelete(e){const{store:s}=this.client,i=s.getState(),c=cd(e)(i);this.dispatch(It(e));try{await this.enqueueRequest({description:"Delete asset type field values attachments",method:h.DELETE,url:"/asset-type-field-values-attachments/bulk/",payload:{uuids:e},blockers:e,blocks:[]})}catch(n){throw this.dispatch(Tt(c)),n}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset type field values attachments",method:h.GET,url:"/asset-type-field-values-attachments/",queryParams:{field_values__asset__project:e},blockers:[],blocks:[]});return this.dispatch(sd(s)),s}}class Mb extends R{add(e){var r;const{store:s}=this.client,i=s.getState(),c=T({...e,created_by:(r=i.userReducer.currentUser)==null?void 0:r.id,submitted_at:new Date().toISOString()}),n=this.enqueueRequest({description:"Add asset type field values",method:h.POST,url:"/asset-type-field-values/",payload:v(c),blockers:[e.asset,e.fields_revision],blocks:[c.uuid]});return this.dispatch(ua(c)),n.then(o=>(this.dispatch(tt(o)),o)).catch(()=>{this.dispatch(oa(c.uuid))}),[c,n]}bulkAdd(e,s){var m;const i=new Date().toISOString(),c=[],n=ke(e.payloads,s??e.payloads.length),r=[];for(const u of n){const l=[];for(const p of u){const A=T({...p,values:p.values,created_by:(m=this.client.store.getState().userReducer.currentUser)==null?void 0:m.id,submitted_at:i});c.push(A),l.push({uuid:A.uuid,asset:p.asset,fields_revision:p.fields_revision,published_at:p.published_at,values:A.values})}r.push({submitted_at:i,values:e.values,field_values:l})}this.dispatch(od(c));const o=[];for(const u of r){const l=u.field_values.map(b=>b.asset),p=u.field_values.map(b=>b.fields_revision),A=u.field_values.map(b=>b.uuid),y=this.enqueueRequest({description:"Bulk add asset type field values",method:h.POST,url:"/asset-type-field-values/bulk/",payload:u,blockers:[...l,...p],blocks:A});o.push(y)}return Promise.all(o).then(u=>{this.dispatch(ld(u.flat()))}).catch(()=>{this.dispatch(hd(c.map(u=>u.uuid)))}),[c,o]}update(e){const{store:s}=this.client,i=s.getState(),c=ha(e.uuid)(i);if(!c)throw new Error(`Expected AssetTypeFieldValues with uuid ${e.uuid} to exist`);const n={...c,...e};this.dispatch(tt(n));const r=this.enqueueRequest({description:"Delete asset type field values",method:h.PATCH,url:`/asset-type-field-values/${e.uuid}/`,payload:e,blockers:[n.uuid,n.fields_revision,n.asset],blocks:[n.uuid]});return r.then(o=>{this.dispatch(tt(o))}).catch(()=>{this.dispatch(tt(c))}),[n,r]}async delete(e){const{store:s}=this.client,i=s.getState(),c=ha(e)(i);if(!c)throw new Error(`Expected submission with uuid ${e} to exist`);const n=nd(e)(i);this.dispatch(oa(e)),this.dispatch(It(n.map(r=>r.uuid)));try{await this.enqueueRequest({description:"Delete asset type field values",method:h.DELETE,url:`/asset-type-field-values/${e}/`,blockers:[e],blocks:[]})}catch(r){throw this.dispatch(ua(c)),this.dispatch(Tt(n)),r}}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset type field values",method:h.GET,url:"/asset-type-field-values/",queryParams:{asset__project:e},blockers:[],blocks:[]});return this.dispatch(ud(s)),s}}class Eb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(pa(n));const r=this.enqueueRequest({description:"Create asset type",method:h.POST,url:"/asset-types/",payload:v(n),blockers:[],blocks:[n.uuid]});return r.then(m=>{this.dispatch(st(m))}).catch(()=>{this.dispatch(Aa(n.uuid))}),[n,r]}update(e){const{store:s}=this.client,i=fa(e.uuid)(s.getState());if(!i)throw new Error(`Expected asset type with uuid ${e.uuid} to exist`);const c={...i,...e};this.dispatch(st(c));const n=this.enqueueRequest({description:"Update asset type",method:h.PATCH,url:`/asset-types/${e.uuid}/`,payload:{icon:e.icon,color:e.color,name:e.name,description:e.description},blockers:[i.uuid],blocks:[i.uuid]});return n.then(r=>{this.dispatch(st(r))}).catch(()=>{this.dispatch(st(i))}),[c,n]}async delete(e){const{store:s}=this.client,i=s.getState(),c=fa(e)(i);if(!c)throw new Error(`Expected asset type with uuid ${e} to exist`);const n=Ls(e)(i),r=Cr(e)(i);return this.dispatch(Aa(e)),this.dispatch($s(n.map(o=>o.uuid))),this.dispatch(aa(r.map(({uuid:o})=>o))),this.enqueueRequest({description:"Delete asset type",method:h.DELETE,url:`/asset-types/${e}/`,blockers:[e],blocks:[]}).catch(o=>{throw this.dispatch(pa(c)),this.dispatch(gt(n)),this.dispatch(sa(r)),o})}async refreshStore(e){const s=await this.enqueueRequest({description:"Get asset types",method:h.GET,url:"/asset-types/",queryParams:{organization:e},blockers:[],blocks:[]});return this.dispatch(yd(s)),s}}class jb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch(ga(n));const r=this.enqueueRequest({description:"Create Category",method:h.POST,url:"/categories/",payload:v(n),blockers:[e.project],blocks:[n.uuid]});return[n,r]}update(e){const s=this.client.store.getState(),i=Pa(e.uuid)(s);if(!i)throw new Error(`Expected an existing category with uuid ${e.uuid}`);const c={...i,...e};this.dispatch(Id(c));const n=this.enqueueRequest({description:"Edit Category",method:h.PATCH,url:`/categories/${e.uuid}/`,payload:e,blockers:[e.uuid],blocks:[e.uuid]});return[c,n]}remove(e){const{store:s}=this.client,i=Pa(e)(s.getState());if(!i)throw new Error(`No category with uuid ${e} found in the store`);this.dispatch(Od(e));const c=this.enqueueRequest({description:"Delete Category",method:h.DELETE,url:`/categories/${i.uuid}/`,blockers:[i.uuid],blocks:[]});return c.catch(()=>{this.dispatch(ga(i))}),c}async refreshStore(e){const s=await this.enqueueRequest({description:"Get categories",method:h.GET,url:"/categories/",queryParams:{project__organization_owner:e},blocks:[],blockers:[]});return this.dispatch(Td(s)),s}}class qb extends De{constructor(){super(...arguments);S(this,"name","Document Attachment");S(this,"url","/document-attachments");S(this,"addAttachments",Md);S(this,"updateAttachments",jd);S(this,"removeAttachments",Vd);S(this,"removeAttachment",qd);S(this,"setAttachment",Ed);S(this,"selectAttachment",Dd)}buildOfflineAttachment(s){return T({file:URL.createObjectURL(s.file),file_sha1:s.file_sha1,created_by:s.created_by,file_name:s.file.name,file_type:s.file.type,submitted_at:s.submitted_at,description:s.description,document:s.modelUuid})}buildAttachmentPayload(s){return{...s,document:s.modelUuid}}async bulkAdd(s){var p;const{store:i}=this.client,c=(p=i.getState().userReducer.currentUser)==null?void 0:p.id,n=new Date().toISOString(),r=[],o=[],m={},u={};for(const A of s){const{documentUuid:y,file:b}=A,P=await this.getFilePayload(b);P.sha1 in m||(m[P.sha1]=P,u[P.sha1]=[]);const O=this.buildOfflineAttachment({file:b,file_sha1:P.sha1,submitted_at:n,created_by:c,description:"",modelUuid:y});r.push(O),o.push({uuid:O.uuid,file_name:O.file_name,file_sha1:O.file_sha1,file_extension:P.extension,description:O.description,document:y}),u[P.sha1].push(O.uuid)}this.dispatch(this.addAttachments(r));const l=this.enqueueRequest({description:"Attach files to document",method:h.POST,url:"/document-attachments/bulk/",payload:{submitted_at:n,attachments:o,files:Object.values(m)},blocks:r.map(A=>A.uuid),blockers:r.map(A=>A.file_sha1)});return l.then(({attachments:A,presigned_urls:y})=>{this.dispatch(this.updateAttachments(A));const b=this.processPresignedUrls(y);for(const[P,O]of Object.entries(b))O.then(()=>{const w=u[P];for(const q of w)this.makeReadable(q)})}).catch(()=>{this.dispatch(this.removeAttachments(r.map(A=>A.uuid)))}),[r,l.then(({attachments:A})=>A)]}async delete(s){return this._delete(s)}makeReadable(s){this.enqueueRequest({description:"Add attachment to AI assistant",method:h.PATCH,url:`/document-attachments/${s}/`,payload:{readable_to_assistant:!0},blockers:["index-document-attachment",s],blocks:["index-document-attachment"]})}async refreshStore(s){const i=await this.enqueueRequest({description:"Get document attachments",method:h.GET,url:"/document-attachments/",queryParams:{document__project__organization_owner:s},blocks:[],blockers:[]}),c=await this.enqueueRequest({description:"Get document attachments",method:h.GET,url:"/document-attachments/",queryParams:{document__organization:s},blocks:[],blockers:[]}),n=[...i,...c];return this.dispatch(wd(n)),n}}class Vb extends R{add(e){var o;const{store:s}=this.client,i=(o=s.getState().userReducer.currentUser)==null?void 0:o.id,c=new Date().toISOString(),n=T({...e,created_by:i,submitted_at:c});this.dispatch($d([n]));const r=this.enqueueRequest({description:"Create Document",method:h.POST,url:"/documents/",payload:v(n),queryParams:{parent_document:n.parent_document??void 0},blockers:n.parent_document?[n.parent_document]:[],blocks:[n.uuid]});return r.catch(()=>{this.dispatch(Ia([n.uuid]))}),[n,r]}update(e){const{store:s}=this.client,i=s.getState().documentsReducer.documents[e.uuid];if(!i)throw new Error(`attempting to update a document with uuid ${e.uuid} that does not exist in store.documents`);const c={...i,...e};this.dispatch(Ne([c]));const n=this.enqueueRequest({description:"Update Document",method:h.PATCH,url:`/documents/${e.uuid}/`,payload:e,blockers:[e.uuid],blocks:[e.uuid]});return n.catch(()=>{Ne([i])}),[c,n]}delete(e){const{store:s}=this.client,i=_t(s.getState()),c=Gd(e)(s.getState());if(!c)throw new Error(`attempting to delete a document with uuid ${e} that does not exist in store.documents`);const n=c.parent_document?i[c.parent_document]:void 0;this.dispatch(Ia([e]));const r=this.enqueueRequest({description:"Delete Document",method:h.DELETE,url:`/documents/${e}/`,blockers:[e],blocks:[]});return r.then(o=>{this.dispatch(Ne(o))}).catch(()=>{this.dispatch(Ne([c])),n&&this.dispatch(Ne([n]))}),r}async refreshStore(e){const s=this.enqueueRequest({description:"Get project documents",method:h.GET,url:"/documents/",queryParams:{project__organization_owner:e},blockers:[],blocks:[]}),i=this.enqueueRequest({description:"Get organization documents",method:h.GET,url:"/documents/",queryParams:{organization:e},blockers:[],blocks:[]}),c=[...await s,...await i];return this.dispatch(Bd(c)),c}}class zb extends R{async add(e,s){return this.enqueueRequest({description:"Add email domain to organization",method:h.POST,url:"/organization-email-domains/",payload:{email:s,organization:e},blockers:[e,"create-org"],blocks:[]})}async remove(e){return this.dispatch(Kd(e.uuid)),this.enqueueRequest({description:"Remove email domain from organization",method:h.DELETE,url:`/organization-email-domains/${e.uuid}/`,blockers:[e.domain],blocks:[]}).catch(s=>{throw this.dispatch(Wd(e)),s})}async refreshStore(e){const s=await this.enqueueRequest({description:"Fetch email domains for organization",method:h.GET,url:"/organization-email-domains/",queryParams:{organization:e},blockers:[e],blocks:[]});return this.dispatch(Hd(s)),s}}class Ub extends R{async getVerificationCode(e){return this.enqueueRequest({description:"Get verification code",method:h.GET,url:`/verification/email-verification/${e}/`,isAuthNeeded:!1,blockers:[],blocks:[]})}validateVerificationCode(e,s=void 0){return this.enqueueRequest({description:"Validate verification code",method:h.POST,url:`/verification/email-verification/${e}/`,isAuthNeeded:!1,payload:s,blockers:[],blocks:[]})}}const Bt={},dc=new Set;let $t=0,uc=0,oc=0;const Db=20;class Cb extends R{constructor(){super(...arguments);S(this,"host");S(this,"_dbPromise",pm.openDB("fileCache",1,{upgrade(s){s.createObjectStore("files")}}))}async renewUploadUrl(s){const i=await this.fetchCache(s);if(!i)throw new Error(`File with sha1 ${s} not found in cache`);const c=await Kt(i,s),n=await this.enqueueRequest({description:"Get S3 URL",method:h.GET,url:"/authentication/files/presigned-upload-url/",queryParams:{sha1:await Le(i),file_type:i.type,extension:i.name.split(".").pop(),size:i.size.toString()},blockers:[],blocks:[`s3-${c}`]});return"url"in n&&this.dispatch(xd({sha1:s,...n})),n}async addCache(s,i){if(dc.has(i))return;if(!s.type){const r=s.name.split("."),o=r[r.length-1];s=new File([s],s.name,{type:o})}if(!s.name||!s.size||!s.type)throw new Error("Cannot add files to cache that do not have a name, size and type.");const c=await this._dbPromise;!!await c.get("files",i)?(console.error("File already cached (this is unexpected at this point):",s.name,i),$t++):(await c.put("files",s,i),uc++),dc.add(i),oc++,oc%Db===0&&console.debug(`File cache summary: ${$t} hits and ${uc} misses, ${$t/($t+uc)*100}% hit rate over ${oc} calls to addCache.`)}async removeCache(s){await(await this._dbPromise).delete("files",s),dc.delete(s)}async fetchCache(s){return(await this._dbPromise).get("files",s)}async getOrRenewUploadUrl(s){const i=this.client.store.getState();return eu(s)(i)??await this.renewUploadUrl(s)}async uploadFileToS3(s){const i=await this.fetchCache(s);if(!i)throw new Error(`File with sha1 ${s} not found in cache`);const c=await Kt(i,s),n={file_name:i.name,file_sha1:s,file:c},r=await this.getOrRenewUploadUrl(s);if("warning"in r){if(r.warning==="already_uploaded")return[n,Promise.resolve(void 0).then()];throw new Error(r.warning)}const o=r.url,m=this.enqueueRequest({url:o,description:"Upload file",method:h.POST,isExternalUrl:!0,isAuthNeeded:!1,attachmentHash:s,blockers:[`s3-${c}`],blocks:[s],s3url:r});return[n,m]}async fetchFileFromUrl(s,i,c){const n=s.split("?")[0]??s,r=await this.fetchCache(i);if(r){if(!r.name)throw new Error("Cached file unexpectedly has no name.");return r}if(s.startsWith("blob:")){const l=await bc(s),p=new File([l],c??i,{type:l.type});return await this.addCache(p,i),p}let o=Bt[n],m=!0;o?m=!1:(o=new Promise(l=>{this.enqueueRequest({description:"Download file",method:h.GET,url:s,isExternalUrl:!0,isResponseBlob:!0,isAuthNeeded:!1,blockers:[i],blocks:[i]}).then(p=>{const A=new File([p],c??i,{type:p.type});l(A)})}),Bt[n]=o);let u;try{u=await o}catch(l){throw m&&l instanceof U&&delete Bt[n],l}if(m){const l=await Le(u);if(l!==i){const y=`The hash of the file returned from the server (${l}) does not match the
9
9
  expected hash (${i}). This can happen if you're using a local development server and the
10
10
  isExternalUrl flag in the request details is set to true, because instead of requesting the local
11
11
  REST API, you will be requesting localhost:80 (where this app runs), resulting in a transformed blob
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Core functionality for Overmap",
4
4
  "author": "Wôrdn Inc.",
5
5
  "license": "UNLICENSED",
6
- "version": "1.0.78-view-sets.26",
6
+ "version": "1.0.78-view-sets.28",
7
7
  "type": "module",
8
8
  "main": "dist/overmap-core.umd.cjs",
9
9
  "module": "dist/overmap-core.js",