1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[3780],{31:(e,t,a)=>{"use strict";a.d(t,{K:()=>r});var n=a(14232);function r(e){let{items:t,tableDefinitions:a,sortDimension:r,sortDirection:l,filterValue:i,setCurrentItems:s}=e;(0,n.useEffect)(()=>{let e=[...t];if(e=t.filter(e=>!i||e.name.toLowerCase().includes(i.toLowerCase())),r&&l){let t=a.find(e=>e.field===r),n=null==t?void 0:t.field;n&&(e=[...e].sort((e,t)=>{let a=e[n],r=t[n];return a<r?"ascending"===l?-1:1:a>r?"ascending"===l?1:-1:0}))}return s(e)},[r,l,i,t,a,s])}},1603:e=>{e.exports={table:"datagrid_table__RCCBG",tableButton:"datagrid_tableButton__NqTwI",cellText:"datagrid_cellText__u5Noo",filter:"datagrid_filter__VeRe9",headerButton:"datagrid_headerButton___vsG2",halfWidth:"datagrid_halfWidth__s9WSx"}},33780:(e,t,a)=>{"use strict";a.r(t),a.d(t,{__N_SSP:()=>N,default:()=>A});var n=a(37876),r=a(67768),l=a(67914),i=a(87156),s=a.n(i),d=a(77328),o=a.n(d),c=a(48230),u=a.n(c),h=a(89099),g=a(25053),f=a(14232),p=a(45754),m=a(51572),v=a(51513),x=a(1603),j=a.n(x),w=a(31),b=a(36373),S=a(38378),y=a(32666),C=a(42902),_=a(9352),B=a(61132),D=a(53216),N=!0;let A=()=>{let{t:e}=(0,g.Bd)(),t=(0,r.jE)();(0,h.useRouter)();let{app:a,isReady:i,isAuthenticated:d,authUnavailable:c}=(0,f.useContext)(D.BR),{org:x,linkPrefix:N,notFound:A}=(0,_.x8)(),{canCreateResources:R,canDeleteResources:k}=(0,B.S)(null==x?void 0:x.id),[F,P]=(0,f.useState)([]),[T,E]=(0,f.useState)([]),[I,L]=(0,f.useState)(null),[O,z]=(0,f.useState)(null),[M,H]=(0,f.useState)(null),[K,$]=(0,f.useState)(!1),[G,U]=(0,f.useState)({}),q=async e=>{x&&(await a.service("datasources").remove(e),$(!1),P(F.filter(t=>t.id!==e)),E(T.filter(t=>t.id!==e)))},W=async e=>{if(x)return await a.service("datasources").find({query:{$select:["id","name","updatedAt"],$limit:1e3,$sort:{updatedAt:-1}}})},{data:J,isFetching:V}=(0,l.I)({queryKey:["datasources",null==x?void 0:x.id],queryFn:W,refetchOnWindowFocus:!1,enabled:!!a&&!!x});(0,f.useEffect)(()=>{if(!J)return;let e=J.data.map(e=>({id:e.id,name:e.name,updatedAt:e.updatedAt}));P(e),E(e)},[J]);let Q=(0,f.useMemo)(()=>{let t=[{headerName:e("dataSourceListPage.dataGridHeaders.id"),field:"id",sortable:!0,width:"60"},{headerName:e("dataSourceListPage.dataGridHeaders.name"),field:"name",renderFields:["name","id"],render:t=>{let[a,r]=t;return(0,n.jsxs)(u(),{href:"".concat(N,"/datasources/").concat(r),tabIndex:-1,children:[(0,n.jsx)("span",{id:"row-".concat(r),children:a})," ",(0,n.jsx)("span",{className:"visually-hidden",children:e("dataSourceListPage.linkHiddenText")})]})},sortable:!0},{headerName:e("dataSourceListPage.dataGridHeaders.updatedAt"),field:"updatedAt",renderFields:["updatedAt"],sortable:!0,render:e=>{let[t]=e;return new Date(t).toLocaleString()}}];return k&&t.push({headerName:e("dataSourceListPage.dataGridHeaders.delete"),field:"delete",width:"80",renderFields:["name","id"],render:t=>{let[a,r]=t;return(0,n.jsx)(m.$,{className:j().tableButton,type:"outline",tabIndex:-1,"aria-labelledby":"th-delete row-".concat(r),onClick:()=>{U({name:a,id:r}),$(!0)},children:e("dataSourceListPage.deleteButton")})}}),t},[e,k,N]);return((0,w.K)({items:F,tableDefinitions:Q,sortDimension:I,sortDirection:O,filterValue:M,setCurrentItems:E}),i)?c?(0,n.jsx)(p.$c,{}):d?A?(0,n.jsx)(s(),{statusCode:404}):(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)(y.P,{children:[(0,n.jsx)(o(),{children:(0,n.jsx)("title",{children:e("dataSourceListPage.pageTitle")})}),(0,n.jsx)("h1",{children:e("dataSourceListPage.heading")}),R&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(m.$,{type:"primary",href:"".concat(N,"/datasources/new"),children:e("dataSourceListPage.createNewButton")}),(0,n.jsx)(b.d,{onUploaded:()=>t.invalidateQueries({queryKey:["datasources",null==x?void 0:x.id]})})]}),V||!J?(0,n.jsx)("p",{children:(0,n.jsx)(C.R,{text:e("dataSourceListPage.loadingText")})}):(0,n.jsx)(v.z,{definitions:Q,currentItems:T,items:F,setSort:(e,t)=>{L(e),z(t)},sortDimension:I,sortDirection:O,setFilterValue:H}),(0,n.jsx)(S.A,{open:K,onDelete:q,onClose:()=>$(!1),data:G})]})}):(0,n.jsx)(p.QK,{}):(0,n.jsx)(C.R,{})}},36373:(e,t,a)=>{"use strict";a.d(t,{d:()=>m});var n=a(37876),r=a(25053),l=a(14232),i=a(27524),s=a.n(i),d=a(65094);let o=/\.(?:geojson|json)$/i;function c(e,t){var a;let n=(0,d.bq)(t);if(n)throw Error("".concat(e,": ").concat(n.join(", ")));return{name:(null!=(a=e.split("/").at(-1))?a:e).replace(o,""),source:(0,d.eZ)(t),type:"geo-json"}}function u(e,t){return new Promise((a,n)=>{let r=new FileReader;r.onerror=()=>{var t;return n(null!=(t=r.error)?t:Error("Could not read ".concat(e.name)))},r.onload=()=>a(r.result),r[t](e)})}async function h(e){let t=Object.values((await s().loadAsync(await u(e,"readAsArrayBuffer"))).files).filter(e=>{var t,a;return!e.dir&&!((t=e.name).startsWith("__MACOSX/")||(null!=(a=t.split("/").at(-1))?a:t).startsWith("._"))&&o.test(e.name)}
1);if(0===t.length)throw Error("".concat(e.name,": no GeoJSON files found"));return Promise.all(t.map(async e=>c(e.name,await e.async("string"))))}async function g(e){let t=[];for(let a of e){if(/\.zip$/i.test(a.name)){t.push(...await h(a));continue}if(!o.test(a.name))throw Error("".concat(a.name,": unsupported file type"));t.push(c(a.name,await u(a,"readAsText")))}if(0===t.length)throw Error("No files selected");return t}var f=a(53216),p=a(51572);function m(e){let{onUploaded:t,onPrepared:a}=e,{t:i}=(0,r.Bd)(),{app:s}=(0,l.useContext)(f.BR),d=(0,l.useRef)(null),o=(0,l.useRef)(!1),[c,u]=(0,l.useState)(!1),[h,m]=(0,l.useState)(""),[v,x]=(0,l.useState)(""),j=async e=>{var n;let r=e.currentTarget,l=Array.from(null!=(n=r.files)?n:[]);if(0===l.length||!s||o.current)return;o.current=!0,u(!0),m(i("dataSourceUpload.reading")),x("");let d=[];try{let e=await g(l);if(a){await a(e),m(i("dataSourceUpload.prepared",{count:e.length}));return}let n=[];for(let t of e)try{d.push(await s.service("datasources").create(t))}catch(e){n.push("".concat(t.name,": ").concat(e instanceof Error?e.message:String(e)))}m(d.length?i("dataSourceUpload.success",{count:d.length}):""),n.length&&x(i("dataSourceUpload.error",{message:n.join("; ")})),d.length&&await (null==t?void 0:t(d))}catch(e){0===d.length&&m(""),x(t=>[t,i("dataSourceUpload.error",{message:e instanceof Error?e.message:String(e)})].filter(Boolean).join("; "))}finally{o.current=!1,u(!1),r.value=""}};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("input",{ref:d,type:"file",accept:".geojson,.json,.zip,application/geo+json,application/json,application/zip",multiple:!0,disabled:c||!s,onChange:j,className:"visually-hidden","data-testid":"datasource-upload-input","aria-label":i("dataSourceUpload.inputLabel")}),(0,n.jsx)(p.$,{type:"outline",disabled:c||!s,onClick:()=>{var e;return null==(e=d.current)?void 0:e.click()},children:c?i("dataSourceUpload.uploading"):i("dataSourceUpload.button")}),h&&(0,n.jsx)("span",{role:"status","data-testid":"datasource-upload-status",children:h}),v&&(0,n.jsx)("span",{role:"alert","data-testid":"datasource-upload-error",children:v})]})}},38378:(e,t,a)=>{"use strict";a.d(t,{A:()=>s});var n=a(37876),r=a(25053);a(14232);var l=a(51572),i=a(81263);let s=e=>{let{open:t,data:a,onDelete:s,onClose:d}=e,{t:o}=(0,r.Bd)(),c=(null==a?void 0:a.name)||o("deleteDialog.defaultItemName","this item");return(0,n.jsxs)(i.A,{title:o("deleteDialog.title",{name:c}),open:t,modal:!0,handleClose:d,children:[(0,n.jsx)("p",{children:o("deleteDialog.confirmation",{name:c})}),(0,n.jsxs)("div",{className:"modal-buttons",children:[(0,n.jsx)(l.$,{type:"primary",onClick:()=>s(null==a?void 0:a.id),children:o("deleteDialog.deleteButton")}),(0,n.jsx)(l.$,{type:"outline",autoFocus:!0,onClick:d,children:o("deleteDialog.cancelButton")})]})]})}},39515:(e,t,a)=>{"use strict";function n(e){var t,a,n,r,l;return null!=(l=null!=(r=null==(t=e.defaultOrganization)?void 0:t.id)?r:null==(a=e.activeOrganization)?void 0:a.id)?l:null==(n=e.memberships[0])?void 0:n.organizationId}a.d(t,{e:()=>n})},45754:(e,t,a)=>{"use strict";a.d(t,{$c:()=>g,Oy:()=>f,QK:()=>h});var n=a(37876),r=a(81796),l=a(77328),i=a.n(l),s=a(25053);a(14232);var d=a(53216),o=a(51572),c=a(32666);function u(){return"".concat(window.location.pathname).concat(window.location.search).concat(window.location.hash)}let h=e=>{let{message:t,heading:a,allowCreateAccount:l=!1}=e,{t:d}=(0,s.Bd)(),{loginWithRedirect:h}=(0,r.WB)(),g=null!=a?a:d("authState.signInHeading");return(0,n.jsxs)(c.P,{children:[(0,n.jsx)(i(),{children:(0,n.jsx)("title",{children:d("authState.signInPageTitle")})}),(0,n.jsx)("h1",{children:g}),(0,n.jsx)("p",{role:"alert",children:null!=t?t:d("authState.signInMessage")}),(0,n.jsx)(o.$,{type:"primary",onClick:()=>h({appState:{returnTo:u()}}),children:d("authState.signInButton")}),l&&(0,n.jsxs)(n.Fragment,{children:[" ",(0,n.jsx)(o.$,{type:"secondary",onClick:()=>h({appState:{returnTo:u()},authorizationParams:{screen_hint:"signup"}}),children:d("authState.createAccountButton")})]})]})},g=e=>{let{message:t,heading:a,onRetry:r}=e,{t:l}=(0,s.Bd)(),{retryAuthentication:u}=(0,d.nm)(),h=null!=a?a:l("authState.unavailableHeading");return(0,n.jsxs)(c.P,{children:[(0,n.jsx)(i(),{children:(0,n.jsx)("title",{children:l("authState.unavailablePageTitle")})}),(0,n.jsx)("h1",{children:h}),(0,n.jsx)("p",{role:"alert",children:null!=t?t:l("authState.unavailableMessage")}),(0,n.jsx)(o.$,{type:"primary",onClick:null!=r?r:u,children:l("authState.unavailableRetryButton")})]})},f=e=>{let{message:t,heading:a}=e,{t:r}=(0,s.Bd)(),l=null!=a?a:r("authState.deniedHeading");return(0,n.jsxs)(c.P,{children:[(0,n.jsx)(i(),{children:(0,n.jsx)("title",{children:r("authState.deniedPageTitle")})}),(0,n.jsx)("h1",{children:l}),(0,n.jsx)("p",{role:"alert",children:null!=t?t:r("authState.deniedMessage")})]})}},51513:(e,t,a)=>{"use strict";a.d(t,{z:()=>x});var n=a(37876),r=a(25053),l=a(14232),i=a(54908);let s=function(e,t){var a,n=(a=(0,l.useRef)(!0)).current?(a.current=!1,!0):a.current;(0,l.useEffect)(function(){if(!n)return e()},t)},d=(0,l.forwardRef)(function(e,t){let{isHeading:a,isFocused:r,moveFocus:i,onClick:d,onCellKeyDown:o,children:c}=e,u=(0,l.useRef)(null);return s(()=>{r&&i&&u.current&&u.current.focus()},[r,i]),(0,n.jsx)(a?"th":"td",{tabIndex:r?0:-1,onClick:d,ref:u,onKeyDown:o,scope:a?"row":void 0,children:c})});var o=a(67684),c=a(62701),u=a(1603),h=a.n(u);let g={ascending:{path:"M182.6 41.4c-12.5-12.5-32.8-12.5-45.3 0l-128 128c-9.2 9.2-11.9 22.9-6.9 34.9s16.6 19.8 29.6 19.8H288c12.9 0 24.6-7.8 29.6-19.8s2.2-25.7-6.9-34.9l-128-128z",labelKey:"dataGrid.sort.ascendingLabel"},descending:{path:"M182.6 470.6c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128z",labelKey:"dataGrid.sort.descendingLabel"},unsorted:{path:"M137.4 41.4c12.5-12.5 32.8-12.5 45.3 0l128 128c9.2 9.2 11.9 22.9 6.9 34.9s-16.6 19.8-29.6 19.8H32c-12.9 0-24.6-7.8-29.6-19.8s-2.2-25.7 6.9-34.9l128-128zm0 429.3l-128-128c-9.2-9.2-11.9-22.9-6.9-34.9s16.6-19.8 29.6-19.8H288c12.9 0 24.6 7.8 29.6 19.8s2.2 25.7-6.9 34.9l-128 128c-12.5 12.5-32.8 12.5-45.3 0z",labelKey:"dataGrid.sort.unsortedLabel"}},f={width:"10",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 320 512",role:"img",focu
1sable:"false"},p=e=>{let{direction:t}=e,{t:a}=(0,r.Bd)(),l="ascending"===t?g.ascending:"descending"===t?g.descending:g.unsorted;return(0,n.jsx)("svg",(0,c._)((0,o._)({},f),{"aria-label":a(l.labelKey),children:(0,n.jsx)("path",{d:l.path})}))},m=(0,l.forwardRef)((e,t)=>{let{definition:a,isFocused:r,moveFocus:i,setSort:d,onClick:u,onCellKeyDown:g,tableIsSortable:f,sortDirection:m}=e,v=(0,l.useRef)(null);s(()=>{r&&i&&v.current&&v.current.focus()},[r,i]);let x={id:"th-".concat(a.field),scope:"col",ref:v,width:a.width,tabIndex:f?r?0:-1:void 0,onClick:e=>{if(u(e),f&&a.sortable){let e="ascending"===m?"descending":"descending"===m?null:"ascending";d(a.field,e)}},onKeyDown:g,"aria-sort":m||"none"};return(0,n.jsx)("th",(0,c._)((0,o._)({},x),{children:a.sortable?(0,n.jsxs)("button",{tabIndex:-1,onKeyDown:g,className:h().headerButton,children:[a.headerName,(0,n.jsx)(p,{direction:m})]}):a.headerName}))});var v=a(97192);let x=e=>{let{label:t,currentItems:a,items:o,definitions:c,setSort:u,sortDimension:g,sortDirection:f,setFilterValue:p,onRowClick:x}=e,{t:j}=(0,r.Bd)(),[w,b]=(0,l.useState)({col:0,row:-1,moveFocus:!1}),S=(e,t)=>b({col:e,row:t,moveFocus:!0}),y=(0,l.useRef)(null),C=(0,l.useRef)(o.length),[_,B]=(0,l.useState)(""),[D,N]=l.useState("");(0,i.A)(()=>{p(D),b({col:0,row:-1,moveFocus:!1})},300,[D]);let A=(0,l.useMemo)(()=>c.find(e=>e.sortable)?-1:0,[c]);s(()=>{var e;let t=C.current;if(C.current=o.length,o.length>=t)return;let a=document.activeElement,n=!a||a===document.body||!!(null==(e=y.current)?void 0:e.contains(a));b(e=>({col:e.col,row:e.row-1,moveFocus:n}))},[o.length]);let R=(e,t)=>{!(e.target instanceof HTMLButtonElement)&&e.currentTarget instanceof HTMLTableCellElement&&S(e.currentTarget.cellIndex,t)},k=(e,t,n)=>{let r=e.ctrlKey||e.metaKey;switch(e.key){case"Space":case"Enter":e.preventDefault(),I(e);break;case"ArrowDown":n<a.length-1&&e.target===e.currentTarget&&(e.preventDefault(),S(t,n+1)),r&&P();break;case"ArrowUp":n>A&&(e.preventDefault(),S(t,n-1)),r&&F();break;case"ArrowLeft":t>0&&(e.preventDefault(),S(t-1,n)),r&&T();break;case"ArrowRight":t<c.length-1&&(e.preventDefault(),S(t+1,n)),r&&E();break;case"Home":e.preventDefault(),r?S(0,0):T();break;case"End":e.preventDefault(),r?S(c.length-1,a.length-1):E();break;case"PageUp":e.preventDefault(),F();break;case"PageDown":e.preventDefault(),P()}},F=()=>{S(w.col,A)},P=()=>{S(w.col,a.length-1)},T=()=>{S(0,w.row)},E=()=>{S(c.length-1,w.row)},I=e=>{let t=e.target;if(!(t instanceof HTMLElement))return;let a=t.querySelector("a, button");("BUTTON"===t.tagName||"A"===t.tagName)&&(a=t),a&&(e.preventDefault(),a.click())},L=(e,t)=>{u(e,t);let a=j("dataGrid.sort.unsortedAnnouncement");t&&(a=j("dataGrid.sort.".concat(t,"Announcement"))),B(a)};return(0,n.jsxs)("div",{children:[p&&(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{htmlFor:"filter-results",children:j("dataGrid.filterResults")}),(0,n.jsx)("input",{id:"filter-results",className:h().filter,type:"text",onChange:e=>{let{currentTarget:t}=e;N(t.value)}})]}),(0,n.jsx)("p",{"aria-live":"polite",children:j("dataGrid.resultsSummary",{current:a.length,total:o.length})}),(0,n.jsxs)("table",{ref:y,role:"grid",className:h().table,children:[t&&(0,n.jsx)("caption",{children:t}),(0,n.jsx)("thead",{children:(0,n.jsx)("tr",{children:c.map((e,t)=>(0,n.jsx)(m,{isFocused:w.col===t&&-1===w.row,moveFocus:w.moveFocus,definition:e,onClick:e=>R(e,-1),onCellKeyDown:e=>k(e,t,-1),tableIsSortable:-1===A,sortDirection:g===e.field?f:null,setSort:L},t))})}),(0,n.jsx)("tbody",{children:a.map((e,t)=>(0,n.jsx)("tr",{onClick:()=>null==x?void 0:x(e,t),children:c.map((a,r)=>{var l;let i=null==(l=a.renderFields)?void 0:l.map(t=>e[t]);return(0,n.jsx)(d,{isFocused:w.col===r&&w.row===t,moveFocus:w.moveFocus,onClick:e=>R(e,t),onCellKeyDown:e=>k(e,r,t),isHeading:a.isHeading,children:a.render?a.render(i):String(a.field?e[a.field]:void 0)},r)})},t))})]}),(0,n.jsx)(v.A,{text:_})]})}},61132:(e,t,a)=>{"use strict";a.d(t,{S:()=>s});var n=a(53216),r=a(39515);let l={viewer:0,editor:1,admin:2,owner:3};function i(e,t){if(!e)return!1;let a=l[e.role],n=l[t];return void 0!==a&&void 0!==n&&a>=n}function s(e){var t,a;let{user:l,activeMembership:s,memberships:d=[],activeOrganization:o=null,isSuperuser:c}=(0,n.nm)(),u=(0,r.e)({defaultOrganization:null==l?void 0:l.defaultOrganization,activeOrganization:o,memberships:d}),h=null!=(t=null!=e?e:null==s?void 0:s.organizationId)?t:u,g=h?(null==s?void 0:s.organizationId)===h?s:null!=(a=d.find(e=>e.organizationId===h))?a:null:null,f=void 0!==h&&u===h,p=c||i(g,"editor");return{membership:g,isOrganizationMember:null!==g,isActiveOrganization:f,canViewOrgResources:c||i(g,"viewer"),canViewMembers:c||i(g,"viewer"),canCreateResources:p,canCreateInActiveOrganization:f&&p,canEditResources:c||i(g,"editor"),canDeleteResources:c||i(g,"admin"),canManageSharing:c||i(g,"admin"),canInviteMembers:c||i(g,"admin"),canRemoveMembers:c||i(g,"admin"),canChangeMemberRoles:c||i(g,"admin"),canAddOrRemoveOwners:c||i(g,"owner"),canManageApiKeys:c||i(g,"admin"),canEditOrgSettings:c||i(g,"admin"),canDeleteOrg:c||i(g,"owner")}}},65094:(e,t,a)=>{"use strict";a.d(t,{bq:()=>i,eZ:()=>s,qF:()=>r,st:()=>l});var n=a(85946);let r=e=>{if(!e)return null;try{return JSON.parse(e)}catch(e){return null}},l=e=>{let t=r(e);return t?JSON.stringify(t,null," "):e},i=e=>{if(!e||!e.trim())return["Cannot be empty"];let t=r(e);
1if(!t)return["Not valid JSON"];let a=n.valid(t,!0);return!!a&&!!a.length&&a},s=e=>{let t=r(e);return t?JSON.stringify(t):""}},87156:(e,t,a)=>{e.exports=a(58123)}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.