sanity-plugin-dashboard-widget-document-list

3.0.153.0.16
~

Modified (5 files)

Index: package/dist/index.js
===================================================================
--- package/dist/index.js
+++ package/dist/index.js
@@ -1,4 +1,5 @@
+import "@sanity/ui/styles.css";
 import { c } from "react/compiler-runtime";
 import { DashboardWidgetContainer } from "@sanity/dashboard";
 import { Card, Flex, Spinner, Stack } from "@sanity/ui";
 import intersection from "lodash-es/intersection.js";
@@ -11,9 +12,12 @@
 const draftId = (nonDraftDoc) => `drafts.${nonDraftDoc._id}`;
 function prepareDocumentList(incoming, client) {
 	if (!incoming) return Promise.resolve([]);
 	let documents = Array.isArray(incoming) ? incoming : [incoming], ids = documents.filter((doc) => !doc._id.startsWith("drafts.")).map(draftId);
-	return client.fetch("*[_id in $ids]", { ids }).then((drafts) => uniqBy(documents.map((doc) => drafts.find((draft) => draft._id === draftId(doc)) || doc), "_id")).catch((error) => {
+	return client.fetch("*[_id in $ids]", { ids }).then((drafts) => {
+		let outgoing = documents.map((doc) => drafts.find((draft) => draft._id === draftId(doc)) || doc);
+		return uniqBy(outgoing, "_id");
+	}).catch((error) => {
 		throw Error(`Problems fetching docs ${ids.join(", ")}. Error: ${error.message}`);
 	});
 }
 function getSubscription(query, params, client) {
@@ -168,9 +172,9 @@
 }
 function documentListWidget(config) {
 	return {
 		name: "document-list-widget",
-		component: function() {
+		component: function component() {
 			return /* @__PURE__ */ jsx(DocumentList, { ...config });
 		},
 		layout: config.layout
 	};
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "sanity-plugin-dashboard-widget-document-list",
-  "version": "3.0.15",
+  "version": "3.0.16",
   "description": "Dashboard widget for the Sanity Content Studio which displays a list of documents.",
   "keywords": [
     "dashboard",
     "documents",
@@ -30,30 +30,30 @@
     ".": "./dist/index.js",
     "./package.json": "./package.json"
   },
   "dependencies": {
-    "@sanity/ui": "^3.4.3",
+    "@sanity/ui": "^4.0.0",
     "lodash-es": "^4.18.1",
     "rxjs": "^7.8.2"
   },
   "devDependencies": {
     "@sanity/tsconfig": "^2.2.1",
-    "@sanity/tsdown-config": "^0.19.6",
+    "@sanity/tsdown-config": "^0.21.2",
     "@types/lodash-es": "^4.17.12",
-    "@types/react": "^19.2.17",
-    "@types/react-dom": "^19.2.3",
+    "@types/react": "^19.2.18",
+    "@types/react-dom": "^19.2.4",
     "babel-plugin-react-compiler": "^1.0.0",
-    "react": "^19.2.7",
-    "react-dom": "^19.2.7",
-    "sanity": "^6.5.0",
-    "tsdown": "^0.22.13",
-    "@sanity/dashboard": "6.0.14"
+    "react": "^19.2.8",
+    "react-dom": "^19.2.8",
+    "sanity": "^6.9.0",
+    "tsdown": "^0.22.14",
+    "@sanity/dashboard": "6.0.15"
   },
   "peerDependencies": {
     "react": "^19.2",
     "react-dom": "^19.2",
     "sanity": "^5 || ^6.0.0-0",
-    "@sanity/dashboard": "^6.0.14"
+    "@sanity/dashboard": "^6.0.15"
   },
   "engines": {
     "node": ">=20.19 <22 || >=22.12"
   },
Index: package/dist/index.d.ts.map
===================================================================
--- package/dist/index.d.ts.map
+++ package/dist/index.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.d.ts","names":[],"sources":["../src/DocumentList.tsx","../src/plugin.tsx"],"mappings":";;UAeiB;EACf;EACA;EACA;EACA,cAAc;EACd;EACA;EACA;EACA;EACA;;UCpBe,iCAAiC;EAChD,SAAS;;iBAGK,mBAAmB,QAAQ,2BAA2B"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","names":[],"sources":["../src/DocumentList.tsx","../src/plugin.tsx"],"mappings":";;;UAeiB;EACf;EACA;EACA;EACA,cAAc;EACd;EACA;EACA;EACA;EACA;;UCpBe,iCAAiC;EAChD,SAAS;;iBAGK,mBAAmB,QAAQ,2BAA2B"}
\ No newline at end of file
Index: package/dist/index.js.map
===================================================================
--- package/dist/index.js.map
+++ package/dist/index.js.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.js","names":["uniqBy","Observable","of","observableOf","delay","mergeMap","switchMap","tap","SanityClient","SanityDocument","draftId","nonDraftDoc","_id","prepareDocumentList","incoming","client","Promise","resolve","documents","Array","isArray","ids","filter","doc","startsWith","map","fetch","then","drafts","outgoing","foundDraft","find","draft","catch","error","Error","join","message","getSubscription","query","params","Record","listen","events","includeResult","visibility","pipe","event","type","JSON","stringify","DashboardWidgetContainer","Card","Flex","Spinner","Stack","intersection","ReactNode","useEffect","useMemo","useState","getPublishedId","IntentButton","Preview","SanityDocument","useClient","useSchema","getSubscription","DocumentListConfig","title","types","query","queryParams","Record","order","limit","showCreateButton","createButtonText","apiVersion","defaultProps","DocumentList","props","$","_c","t0","documents","setDocuments","loading","setLoading","error","setError","t1","versionedClient","schema","t2","bb0","t3","assembledQuery","params","t4","t5","typeName","schemaType","get","type","name","documentTypes","getTypeNames","filter","t6","subscription","subscribe","next","d","slice","e","unsubscribe","length","width","message","t7","t8","t9","map","_temp","t10","t11","t12","doc","_id","MenuEntry","_type","Symbol","for","id","DashboardWidget","LayoutConfig","DocumentList","DocumentListConfig","DocumentListWidgetConfig","layout","documentListWidget","config","name","component"],"sources":["../src/sanityConnector.ts","../src/DocumentList.tsx","../src/plugin.tsx"],"sourcesContent":["import uniqBy from 'lodash-es/uniqBy.js'\nimport {type Observable, of as observableOf} from 'rxjs'\nimport {delay, mergeMap, switchMap, tap} from 'rxjs/operators'\nimport type {SanityClient, SanityDocument} from 'sanity'\n\nconst draftId = (nonDraftDoc: SanityDocument) => `drafts.${nonDraftDoc._id}`\n\nfunction prepareDocumentList(\n  incoming: SanityDocument | SanityDocument[],\n  client: SanityClient,\n): Promise<SanityDocument[]> {\n  if (!incoming) {\n    return Promise.resolve([])\n  }\n  const documents = Array.isArray(incoming) ? incoming : [incoming]\n\n  const ids = documents.filter((doc) => !doc._id.startsWith('drafts.')).map(draftId)\n\n  return client\n    .fetch<SanityDocument[]>('*[_id in $ids]', {ids})\n    .then((drafts) => {\n      const outgoing = documents.map((doc) => {\n        const foundDraft = drafts.find((draft) => draft._id === draftId(doc))\n        return foundDraft || doc\n      })\n      return uniqBy(outgoing, '_id')\n    })\n    .catch((error) => {\n      throw new Error(`Problems fetching docs ${ids.join(', ')}. Error: ${error.message}`)\n    })\n}\n\nexport function getSubscription(\n  query: string,\n  params: Record<string, any>,\n  client: SanityClient,\n): Observable<SanityDocument[]> {\n  return client\n    .listen(query, params, {\n      events: ['welcome', 'mutation'],\n      includeResult: false,\n      visibility: 'query',\n    })\n    .pipe(\n      switchMap((event) => {\n        return observableOf(1).pipe(\n          event.type === 'welcome' ? tap() : delay(1000),\n          mergeMap(() =>\n            client\n              .fetch(query, params)\n              .then((incoming) => {\n                return prepareDocumentList(incoming, client)\n              })\n              .catch((error) => {\n                if (error.message.startsWith('Problems fetching docs')) {\n                  throw error\n                }\n                throw new Error(\n                  `Query failed ${query} and ${JSON.stringify(params)}. Error: ${error.message}`,\n                )\n              }),\n          ),\n        )\n      }),\n    )\n}\n","import {DashboardWidgetContainer} from '@sanity/dashboard'\nimport {Card, Flex, Spinner, Stack} from '@sanity/ui'\nimport intersection from 'lodash-es/intersection.js'\nimport {type ReactNode, useEffect, useMemo, useState} from 'react'\nimport {\n  getPublishedId,\n  IntentButton,\n  Preview,\n  type SanityDocument,\n  useClient,\n  useSchema,\n} from 'sanity'\n\nimport {getSubscription} from './sanityConnector'\n\nexport interface DocumentListConfig {\n  title?: string\n  types?: string[]\n  query?: string\n  queryParams?: Record<string, any>\n  order?: string\n  limit?: number\n  showCreateButton?: boolean\n  createButtonText?: string\n  apiVersion?: string\n}\n\nconst defaultProps = {\n  title: 'Last created',\n  order: '_createdAt desc',\n  limit: 10,\n  queryParams: {},\n  showCreateButton: true,\n  apiVersion: 'v1',\n}\n\nfunction DocumentList(props: DocumentListConfig): ReactNode {\n  const {\n    query,\n    limit,\n    apiVersion,\n    queryParams,\n    types,\n    order,\n    title,\n    showCreateButton,\n    createButtonText,\n  } = {\n    ...defaultProps,\n    ...props,\n  }\n\n  const [documents, setDocuments] = useState<SanityDocument[] | undefined>()\n  const [loading, setLoading] = useState<boolean>(true)\n  const [error, setError] = useState<Error | undefined>()\n\n  const versionedClient = useClient({apiVersion})\n  const schema = useSchema()\n\n  const {assembledQuery, params} = useMemo(() => {\n    if (query) {\n      return {assembledQuery: query, params: queryParams}\n    }\n\n    const documentTypes = schema.getTypeNames().filter((typeName) => {\n      const schemaType = schema.get(typeName)\n      return schemaType?.type?.name === 'document'\n    })\n\n    return {\n      assembledQuery: `*[_type in $types] | order(${order}) [0...${limit * 2}]`,\n      params: {types: types ? intersection(types, documentTypes) : documentTypes},\n    }\n  }, [schema, query, queryParams, order, limit, types])\n\n  useEffect(() => {\n    if (!assembledQuery) {\n      return\n    }\n\n    const subscription = getSubscription(assembledQuery, params, versionedClient).subscribe({\n      next: (d) => {\n        setDocuments(d.slice(0, limit))\n        setLoading(false)\n      },\n      error: (e) => {\n        setError(e)\n        setLoading(false)\n      },\n    })\n    // eslint-disable-next-line consistent-return\n    return () => {\n      subscription.unsubscribe()\n    }\n  }, [limit, versionedClient, assembledQuery, params])\n\n  return (\n    <DashboardWidgetContainer\n      header={title}\n      footer={\n        types &&\n        types.length === 1 &&\n        showCreateButton && (\n          <IntentButton\n            mode=\"bleed\"\n            style={{width: '100%'}}\n            // paddingX={2}\n            paddingY={4}\n            tone=\"primary\"\n            type=\"button\"\n            intent=\"create\"\n            params={{type: types[0]}}\n            text={createButtonText || `Create new ${types[0]}`}\n          />\n        )\n      }\n    >\n      <Card>\n        {error && <div>{error.message}</div>}\n        {!error && loading && (\n          <Card padding={4}>\n            <Flex justify=\"center\">\n              <Spinner muted />\n            </Flex>\n          </Card>\n        )}\n        {!error && !documents && !loading && <div>Could not locate any documents :/</div>}\n        <Stack gap={2}>\n          {documents && documents.map((doc) => <MenuEntry key={doc._id} doc={doc} />)}\n        </Stack>\n      </Card>\n    </DashboardWidgetContainer>\n  )\n}\n\nfunction MenuEntry({doc}: {doc: SanityDocument}) {\n  const schema = useSchema()\n  const type = schema.get(doc._type)\n  return (\n    <Card flex={1}>\n      <IntentButton\n        intent=\"edit\"\n        mode=\"bleed\"\n        tooltipProps={{}}\n        // padding={1}\n        // radius={0}\n        params={{\n          type: doc._type,\n          id: getPublishedId(doc._id),\n        }}\n        style={{width: '100%'}}\n      >\n        {type ? (\n          <Preview layout=\"default\" schemaType={type} value={doc} key={doc._id} />\n        ) : (\n          'Schema-type missing'\n        )}\n      </IntentButton>\n    </Card>\n  )\n}\n\nexport default DocumentList\n","import type {DashboardWidget, LayoutConfig} from '@sanity/dashboard'\n\nimport DocumentList, {type DocumentListConfig} from './DocumentList'\n\nexport interface DocumentListWidgetConfig extends DocumentListConfig {\n  layout?: LayoutConfig\n}\n\nexport function documentListWidget(config: DocumentListWidgetConfig): DashboardWidget {\n  return {\n    name: 'document-list-widget',\n    component: function component() {\n      return <DocumentList {...config} />\n    },\n    layout: config.layout,\n  }\n}\n"],"mappings":";;;;;;;;;;AAKA,MAAMU,WAAWC,gBAAgC,UAAUA,YAAYC;AAEvE,SAASC,oBACPC,UACAC,QAC2B;CAC3B,IAAI,CAACD,UACH,OAAOE,QAAQC,QAAQ,CAAA,CAAE;CAE3B,IAAMC,YAAYC,MAAMC,QAAQN,QAAQ,IAAIA,WAAW,CAACA,QAAQ,GAE1DO,MAAMH,UAAUI,QAAQC,QAAQ,CAACA,IAAIX,IAAIY,WAAW,SAAS,CAAC,CAAC,CAACC,IAAIf,OAAO;CAEjF,OAAOK,OACJW,MAAwB,kBAAkB,EAACL,IAAG,CAAC,CAAC,CAChDM,MAAMC,WAKE5B,OAJUkB,UAAUO,KAAKF,QACXK,OAAOG,MAAMC,UAAUA,MAAMpB,QAAQF,QAAQa,GAAG,CAC5DO,KAAcP,GAETM,GAAU,KAAK,CAC9B,CAAC,CACDI,OAAOC,UAAU;EAChB,MAAUC,MAAM,0BAA0Bd,IAAIe,KAAK,IAAI,EAAC,WAAYF,MAAMG,SAAS;CACrF,CAAC;AACL;AAEA,SAAgBC,gBACdC,OACAC,QACAzB,QAC8B;CAC9B,OAAOA,OACJ2B,OAAOH,OAAOC,QAAQ;EACrBG,QAAQ,CAAC,WAAW,UAAU;EAC9BC,eAAe;EACfC,YAAY;CACd,CAAC,CAAC,CACDC,KACCxC,WAAWyC,UACF5C,GAAa,CAAC,CAAC,CAAC2C,KACrBC,MAAMC,SAAS,YAAYzC,IAAI,IAAIH,MAAM,GAAI,GAC7CC,eACEU,OACGW,MAAMa,OAAOC,MAAM,CAAC,CACpBb,MAAMb,aACED,oBAAoBC,UAAUC,MAAM,CAC5C,CAAC,CACDkB,OAAOC,UAAU;EAIhB,MAHIA,MAAMG,QAAQb,WAAW,wBAAwB,IAC7CU,QAEEC,MACR,gBAAgBI,MAAK,OAAQU,KAAKC,UAAUV,MAAM,EAAC,WAAYN,MAAMG,SACvE;CACF,CAAC,CACL,CACF,CACD,CACH;AACJ;ACtCA,MAAM0C,eAAe;CACnBV,OAAO;CACPK,OAAO;CACPC,OAAO;CACPH,aAAa,CAAC;CACdI,kBAAkB;CAClBE,YAAY;AACd;AAEA,SAAAE,aAAAC,OAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAAAC;CAAA,AAAAF,EAAA,OAAAD,QAcGG,KAAAF,EAAA,MAHGE,KAAA;EAAA,GACCL;EAAY,GACZE;CACL,GAACC,EAAA,KAAAD,OAAAC,EAAA,KAAAE;CAbD,IAAA,EAAAb,OAAAI,OAAAG,YAAAN,aAAAF,OAAAI,OAAAL,OAAAO,kBAAAC,qBAUIO,IAKJ,CAAAC,WAAAC,gBAAkC1B,SAAuC,GACzE,CAAA2B,SAAAC,cAA8B5B,SAAkB,EAAI,GACpD,CAAA6B,OAAAC,YAA0B9B,SAA4B,GAAC+B;CAAA,AAAAT,EAAA,OAAAJ,aAETa,KAAAT,EAAA,MAAZS,KAAA,EAAAb,WAAW,GAACI,EAAA,KAAAJ,YAAAI,EAAA,KAAAS;CAA9C,IAAAC,kBAAwB3B,UAAU0B,EAAY,GAC9CE,SAAe3B,UAAU,GAAC4B;CAAAC,KAAA;EAGxB,IAAIxB,OAAK;GAAA,IAAAyB;GACPF,AADOZ,EAAA,OAAAX,SAAAW,EAAA,OAAAV,eACAwB,KAAA;IAAAC,gBAAiB1B;IAAK2B,QAAU1B;GAAW,GAACU,EAAA,KAAAX,OAAAW,EAAA,KAAAV,aAAAU,EAAA,KAAAc,MAAAA,KAAAd,EAAA,IAAnDY,KAAOE;GAAP,MAAAD;EAAmD;EACpD,IAAAC,IAAAG;EAAA,IAAAjB,EAAA,OAAAP,SAAAO,EAAA,OAAAR,SAAAQ,EAAA,OAAAW,UAAAX,EAAA,QAAAZ,OAAA;GAAA,IAAA8B;GAAA,AAAAlB,EAAA,QAAAW,SAKAO,KAAAlB,EAAA,OAHkDkB,MAAAC,aAC9BR,OAAMU,IAAKF,QACvBC,CAAU,EAAAE,MAAYC,SAAK,YACnCvB,EAAA,MAAAW,QAAAX,EAAA,MAAAkB;GAHD,IAAAM,gBAAsBb,OAAMc,aAAc,CAAC,CAAAC,OAAQR,EAGlD;GAI2ElB,AAD1DiB,KAAA,8BAA8BzB,MAAK,SAAUC,QAAQ,EAAC,IACtDqB,KAAA1B,QAAQd,aAAac,OAAOoC,aAA6B,IAAzDA,eAA0DxB,EAAA,KAAAP,OAAAO,EAAA,KAAAR,OAAAQ,EAAA,KAAAW,QAAAX,EAAA,MAAAZ,OAAAY,EAAA,MAAAc,IAAAd,EAAA,MAAAiB;EAAA,OAAAA,AAAAH,KAAAd,EAAA,KAAAiB,KAAAjB,EAAA;EAAA,IAAAkB;EAAA,AAAAlB,EAAA,QAAAc,KAACI,KAAAlB,EAAA,OAAnEkB,KAAA,EAAA9B,OAAQ0B,GAA0D,GAACd,EAAA,MAAAc,IAAAd,EAAA,MAAAkB;EAAA,IAAAS;EAF7Ef,AAE6EZ,EAAA,QAAAiB,MAAAjB,EAAA,QAAAkB,MAFtES,KAAA;GAAAZ,gBACWE;GAAyDD,QACjEE;EACV,GAAClB,EAAA,MAAAiB,IAAAjB,EAAA,MAAAkB,IAAAlB,EAAA,MAAA2B,MAAAA,KAAA3B,EAAA,KAHDY,KAAOe;CAGN;CAbH,IAAA,EAAAZ,gBAAAC,WAAiCJ,IAcoBE,IAAAG;CAErDzC,AAFqDwB,EAAA,QAAAe,kBAAAf,EAAA,QAAAP,SAAAO,EAAA,QAAAgB,UAAAhB,EAAA,QAAAU,mBAE3CI,WAAA;EACR,IAAI,CAACC,gBAAc;EAInB,IAAAa,eAAqB3C,gBAAgB8B,gBAAgBC,QAAQN,eAAe,CAAC,CAAAmB,UAAW;GAAAC,OAChFC,MAAA;IAEJzB,AADAF,aAAa2B,EAACC,MAAO,GAAGvC,KAAK,CAAC,GAC9Ba,WAAW,EAAK;GAAC;GAClBC,QACM0B,MAAA;IAEL3B,AADAE,SAASyB,CAAC,GACV3B,WAAW,EAAK;GAAC;EAErB,CAAC;EAAC,aAEK;GACLsB,aAAYM,YAAa;EAAC;CAC3B,GACAjB,KAAA;EAACxB;EAAOiB;EAAiBK;EAAgBC;CAAM,GAAChB,EAAA,MAAAe,gBAAAf,EAAA,MAAAP,OAAAO,EAAA,MAAAgB,QAAAhB,EAAA,MAAAU,iBAAAV,EAAA,MAAAc,IAAAd,EAAA,MAAAiB,OAAAH,KAAAd,EAAA,KAAAiB,KAAAjB,EAAA,MAnBnDxB,UAAUsC,IAmBPG,EAAgD;CAAC,IAAAC;CAAA,AAAAlB,EAAA,QAAAL,oBAAAK,EAAA,QAAAN,oBAAAM,EAAA,QAAAZ,SAM9C8B,KAAA9B,SACAA,MAAK+C,WAAY,KADjBzC,oBAGE,oBAAC,cAAD;EACO,MAAA;EACE,OAAA,EAAA0C,OAAQ,OAAM;EAEX,UAAA;EACL,MAAA;EACA,MAAA;EACE,QAAA;EACC,QAAA,EAAAd,MAAOlC,MAAK,GAAG;EACjB,MAAAO,oBAAA,cAAkCP,MAAK;CAAK,CAAA,GAErDY,EAAA,MAAAL,kBAAAK,EAAA,MAAAN,kBAAAM,EAAA,MAAAZ,OAAAY,EAAA,MAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,QAAAO,QAImCoB,KAAA3B,EAAA,OAAnC2B,KAAApB,SAAS,oBAAA,OAAA,EAAA,UAAMA,MAAK8B,QAAe,CAAA,GAAArC,EAAA,MAAAO,OAAAP,EAAA,MAAA2B;CAAA,IAAAW;CAAA,AAAAtC,EAAA,QAAAO,SAAAP,EAAA,QAAAK,WACnCiC,KAAA,CAAC/B,SAADF,WACC,oBAAC,MAAD;EAAe,SAAA;EACb,UAAA,oBAAC,MAAD;GAAc,SAAA;GACZ,UAAA,oBAAC,SAAD,EAAS,OAAA,GAAK,CAAA;EADX,CAAA;CADF,CAAA,GAKNL,EAAA,MAAAO,OAAAP,EAAA,MAAAK,SAAAL,EAAA,MAAAsC,MAAAA,KAAAtC,EAAA;CAAA,IAAAuC;CAAA,AAAAvC,EAAA,QAAAG,aAAAH,EAAA,QAAAO,SAAAP,EAAA,QAAAK,WACAkC,KAAA,CAAChC,SAAD,CAAWJ,aAAX,CAAyBE,WAAW,oBAAA,OAAA,EAAA,UAAK,oCAAuC,CAAA,GAAAL,EAAA,MAAAG,WAAAH,EAAA,MAAAO,OAAAP,EAAA,MAAAK,SAAAL,EAAA,MAAAuC,MAAAA,KAAAvC,EAAA;CAAA,IAAAwC;CAAA,AAAAxC,EAAA,QAAAG,YAEJqC,KAAAxC,EAAA,OAA1EwC,KAAArC,aAAaA,UAASsC,IAAKC,KAA8C,GAAC1C,EAAA,MAAAG,WAAAH,EAAA,MAAAwC;CAAA,IAAAG;CAAA,AAAA3C,EAAA,QAAAwC,KACrEG,MAAA3C,EAAA,OAFR2C,MAAA,oBAAC,OAAD;EAAY,KAAA;EACTH,UAAAA;CADG,CAAA,GAEExC,EAAA,MAAAwC,IAAAxC,EAAA,MAAA2C;CAAA,IAAAC;CAAA,AAAA5C,EAAA,QAAA2C,OAAA3C,EAAA,QAAA2B,MAAA3B,EAAA,QAAAsC,MAAAtC,EAAA,QAAAuC,MAZVK,MAAA,qBAAC,MAAD,EAAA,UAAA;EACGjB;EACAW;EAOAC;EACDI;CAVG,EAAA,CAAA,GAaE3C,EAAA,MAAA2C,KAAA3C,EAAA,MAAA2B,IAAA3B,EAAA,MAAAsC,IAAAtC,EAAA,MAAAuC,IAAAvC,EAAA,MAAA4C,OAAAA,MAAA5C,EAAA;CAAA,IAAA6C;CACkB,OADlB7C,EAAA,QAAA4C,OAAA5C,EAAA,QAAAkB,MAAAlB,EAAA,QAAAb,SAjCT0D,MAAA,oBAAC,0BAAD;EACU1D,QAAAA;EAEN,QAAA+B;EAiBF0B,UAAAA;CApBuB,CAAA,GAkCE5C,EAAA,MAAA4C,KAAA5C,EAAA,MAAAkB,IAAAlB,EAAA,MAAAb,OAAAa,EAAA,MAAA6C,OAAAA,MAAA7C,EAAA,KAlC3B6C;AAkC2B;AA/F/B,SAAAH,MAAAI,KAAA;CAAA,OA4F+C,oBAAC,WAAD,EAA8BA,IAAG,GAAjBA,IAAGC,GAAc;AAAI;AAOpF,SAAAC,UAAA9C,IAAA;CAAA,IAAAF,IAAAC,EAAA,EAAA,GAAmB,EAAA6C,QAAA5C,IACjBS,SAAe3B,UAAU,GAACyB;CAAA,AAAAT,EAAA,OAAA8C,IAAAG,SAAAjD,EAAA,OAAAW,UACbF,KAAAE,OAAMU,IAAKyB,IAAGG,KAAM,GAACjD,EAAA,KAAA8C,IAAAG,OAAAjD,EAAA,KAAAW,QAAAX,EAAA,KAAAS,MAAAA,KAAAT,EAAA;CAAlC,IAAAsB,OAAab,IAAqBG;CAAA,AAAAZ,EAAA,OAAAkD,OAAAC,IAAA,2BAAA,KAMdvC,KAAA,CAAC,GAACZ,EAAA,KAAAY,MAAAA,KAAAZ,EAAA;CAIR,IAAAc,KAAAgC,IAAGG,OAAMhC;CAAA,AAAAjB,EAAA,OAAA8C,IAAAC,MACY9B,KAAAjB,EAAA,MAAvBiB,KAAAtC,eAAemE,IAAGC,GAAI,GAAC/C,EAAA,KAAA8C,IAAAC,KAAA/C,EAAA,KAAAiB;CAAA,IAAAC;CAAA,AAAAlB,EAAA,OAAA8C,IAAAG,SAAAjD,EAAA,OAAAiB,MAFrBC,KAAA;EAAAI,MACAR;EAASsC,IACXnC;CACN,GAACjB,EAAA,KAAA8C,IAAAG,OAAAjD,EAAA,KAAAiB,IAAAjB,EAAA,KAAAkB,MAAAA,KAAAlB,EAAA;CAAA,IAAA2B;CAAA,AAAA3B,EAAA,OAAAkD,OAAAC,IAAA,2BAAA,KACMxB,KAAA,EAAAS,OAAQ,OAAM,GAACpC,EAAA,KAAA2B,MAAAA,KAAA3B,EAAA;CAAA,IAAAsC;CAAA,AAAAtC,EAAA,QAAA8C,OAAA9C,EAAA,QAAAsB,QAErBgB,KAAAhB,OACC,oBAAC,SAAD;EAAgB,QAAA;EAAsBA,YAAAA;EAAawB,OAAAA;CAAiB,GAAPA,IAAGC,GAAI,IADrE,uBAIA/C,EAAA,MAAA8C,KAAA9C,EAAA,MAAAsB,MAAAtB,EAAA,MAAAsC,MAAAA,KAAAtC,EAAA;CAAA,IAAAuC;CAEE,OAFFvC,EAAA,QAAAkB,MAAAlB,EAAA,QAAAsC,MAjBLC,KAAA,oBAAC,MAAD;EAAY,MAAA;EACV,UAAA,oBAAC,cAAD;GACS,QAAA;GACF,MAAA;GACS,cAAA3B;GAGN,QAAAM;GAID,OAAAS;GAENW,UAAAA;EAZU,CAAA;CADV,CAAA,GAmBEtC,EAAA,MAAAkB,IAAAlB,EAAA,MAAAsC,IAAAtC,EAAA,MAAAuC,MAAAA,KAAAvC,EAAA,KAnBPuC;AAmBO;ACtJX,SAAgBoB,mBAAmBC,QAAmD;CACpF,OAAO;EACLC,MAAM;EACNC,WAAW,WAAqB;GAC9B,OAAO,oBAAC,cAAD,EAAc,GAAIF,OAAO,CAAA;EAClC;EACAF,QAAQE,OAAOF;CACjB;AACF"}
\ No newline at end of file
+{"version":3,"file":"index.js","names":["uniqBy","Observable","of","observableOf","delay","mergeMap","switchMap","tap","SanityClient","SanityDocument","draftId","nonDraftDoc","_id","prepareDocumentList","incoming","client","Promise","resolve","documents","Array","isArray","ids","filter","doc","startsWith","map","fetch","then","drafts","outgoing","foundDraft","find","draft","catch","error","Error","join","message","getSubscription","query","params","Record","listen","events","includeResult","visibility","pipe","event","type","JSON","stringify","DashboardWidgetContainer","Card","Flex","Spinner","Stack","intersection","ReactNode","useEffect","useMemo","useState","getPublishedId","IntentButton","Preview","SanityDocument","useClient","useSchema","getSubscription","DocumentListConfig","title","types","query","queryParams","Record","order","limit","showCreateButton","createButtonText","apiVersion","defaultProps","DocumentList","props","$","_c","t0","documents","setDocuments","loading","setLoading","error","setError","t1","versionedClient","schema","t2","bb0","t3","assembledQuery","params","t4","t5","typeName","schemaType","get","type","name","documentTypes","getTypeNames","filter","t6","subscription","subscribe","next","d","slice","e","unsubscribe","length","width","message","t7","t8","t9","map","_temp","t10","t11","t12","doc","_id","MenuEntry","_type","Symbol","for","id","DashboardWidget","LayoutConfig","DocumentList","DocumentListConfig","DocumentListWidgetConfig","layout","documentListWidget","config","name","component"],"sources":["../src/sanityConnector.ts","../src/DocumentList.tsx","../src/plugin.tsx"],"sourcesContent":["import uniqBy from 'lodash-es/uniqBy.js'\nimport {type Observable, of as observableOf} from 'rxjs'\nimport {delay, mergeMap, switchMap, tap} from 'rxjs/operators'\nimport type {SanityClient, SanityDocument} from 'sanity'\n\nconst draftId = (nonDraftDoc: SanityDocument) => `drafts.${nonDraftDoc._id}`\n\nfunction prepareDocumentList(\n  incoming: SanityDocument | SanityDocument[],\n  client: SanityClient,\n): Promise<SanityDocument[]> {\n  if (!incoming) {\n    return Promise.resolve([])\n  }\n  const documents = Array.isArray(incoming) ? incoming : [incoming]\n\n  const ids = documents.filter((doc) => !doc._id.startsWith('drafts.')).map(draftId)\n\n  return client\n    .fetch<SanityDocument[]>('*[_id in $ids]', {ids})\n    .then((drafts) => {\n      const outgoing = documents.map((doc) => {\n        const foundDraft = drafts.find((draft) => draft._id === draftId(doc))\n        return foundDraft || doc\n      })\n      return uniqBy(outgoing, '_id')\n    })\n    .catch((error) => {\n      throw new Error(`Problems fetching docs ${ids.join(', ')}. Error: ${error.message}`)\n    })\n}\n\nexport function getSubscription(\n  query: string,\n  params: Record<string, any>,\n  client: SanityClient,\n): Observable<SanityDocument[]> {\n  return client\n    .listen(query, params, {\n      events: ['welcome', 'mutation'],\n      includeResult: false,\n      visibility: 'query',\n    })\n    .pipe(\n      switchMap((event) => {\n        return observableOf(1).pipe(\n          event.type === 'welcome' ? tap() : delay(1000),\n          mergeMap(() =>\n            client\n              .fetch(query, params)\n              .then((incoming) => {\n                return prepareDocumentList(incoming, client)\n              })\n              .catch((error) => {\n                if (error.message.startsWith('Problems fetching docs')) {\n                  throw error\n                }\n                throw new Error(\n                  `Query failed ${query} and ${JSON.stringify(params)}. Error: ${error.message}`,\n                )\n              }),\n          ),\n        )\n      }),\n    )\n}\n","import {DashboardWidgetContainer} from '@sanity/dashboard'\nimport {Card, Flex, Spinner, Stack} from '@sanity/ui'\nimport intersection from 'lodash-es/intersection.js'\nimport {type ReactNode, useEffect, useMemo, useState} from 'react'\nimport {\n  getPublishedId,\n  IntentButton,\n  Preview,\n  type SanityDocument,\n  useClient,\n  useSchema,\n} from 'sanity'\n\nimport {getSubscription} from './sanityConnector'\n\nexport interface DocumentListConfig {\n  title?: string\n  types?: string[]\n  query?: string\n  queryParams?: Record<string, any>\n  order?: string\n  limit?: number\n  showCreateButton?: boolean\n  createButtonText?: string\n  apiVersion?: string\n}\n\nconst defaultProps = {\n  title: 'Last created',\n  order: '_createdAt desc',\n  limit: 10,\n  queryParams: {},\n  showCreateButton: true,\n  apiVersion: 'v1',\n}\n\nfunction DocumentList(props: DocumentListConfig): ReactNode {\n  const {\n    query,\n    limit,\n    apiVersion,\n    queryParams,\n    types,\n    order,\n    title,\n    showCreateButton,\n    createButtonText,\n  } = {\n    ...defaultProps,\n    ...props,\n  }\n\n  const [documents, setDocuments] = useState<SanityDocument[] | undefined>()\n  const [loading, setLoading] = useState<boolean>(true)\n  const [error, setError] = useState<Error | undefined>()\n\n  const versionedClient = useClient({apiVersion})\n  const schema = useSchema()\n\n  const {assembledQuery, params} = useMemo(() => {\n    if (query) {\n      return {assembledQuery: query, params: queryParams}\n    }\n\n    const documentTypes = schema.getTypeNames().filter((typeName) => {\n      const schemaType = schema.get(typeName)\n      return schemaType?.type?.name === 'document'\n    })\n\n    return {\n      assembledQuery: `*[_type in $types] | order(${order}) [0...${limit * 2}]`,\n      params: {types: types ? intersection(types, documentTypes) : documentTypes},\n    }\n  }, [schema, query, queryParams, order, limit, types])\n\n  useEffect(() => {\n    if (!assembledQuery) {\n      return\n    }\n\n    const subscription = getSubscription(assembledQuery, params, versionedClient).subscribe({\n      next: (d) => {\n        setDocuments(d.slice(0, limit))\n        setLoading(false)\n      },\n      error: (e) => {\n        setError(e)\n        setLoading(false)\n      },\n    })\n    // eslint-disable-next-line consistent-return\n    return () => {\n      subscription.unsubscribe()\n    }\n  }, [limit, versionedClient, assembledQuery, params])\n\n  return (\n    <DashboardWidgetContainer\n      header={title}\n      footer={\n        types &&\n        types.length === 1 &&\n        showCreateButton && (\n          <IntentButton\n            mode=\"bleed\"\n            style={{width: '100%'}}\n            // paddingX={2}\n            paddingY={4}\n            tone=\"primary\"\n            type=\"button\"\n            intent=\"create\"\n            params={{type: types[0]}}\n            text={createButtonText || `Create new ${types[0]}`}\n          />\n        )\n      }\n    >\n      <Card>\n        {error && <div>{error.message}</div>}\n        {!error && loading && (\n          <Card padding={4}>\n            <Flex justify=\"center\">\n              <Spinner muted />\n            </Flex>\n          </Card>\n        )}\n        {!error && !documents && !loading && <div>Could not locate any documents :/</div>}\n        <Stack gap={2}>\n          {documents && documents.map((doc) => <MenuEntry key={doc._id} doc={doc} />)}\n        </Stack>\n      </Card>\n    </DashboardWidgetContainer>\n  )\n}\n\nfunction MenuEntry({doc}: {doc: SanityDocument}) {\n  const schema = useSchema()\n  const type = schema.get(doc._type)\n  return (\n    <Card flex={1}>\n      <IntentButton\n        intent=\"edit\"\n        mode=\"bleed\"\n        tooltipProps={{}}\n        // padding={1}\n        // radius={0}\n        params={{\n          type: doc._type,\n          id: getPublishedId(doc._id),\n        }}\n        style={{width: '100%'}}\n      >\n        {type ? (\n          <Preview layout=\"default\" schemaType={type} value={doc} key={doc._id} />\n        ) : (\n          'Schema-type missing'\n        )}\n      </IntentButton>\n    </Card>\n  )\n}\n\nexport default DocumentList\n","import type {DashboardWidget, LayoutConfig} from '@sanity/dashboard'\n\nimport DocumentList, {type DocumentListConfig} from './DocumentList'\n\nexport interface DocumentListWidgetConfig extends DocumentListConfig {\n  layout?: LayoutConfig\n}\n\nexport function documentListWidget(config: DocumentListWidgetConfig): DashboardWidget {\n  return {\n    name: 'document-list-widget',\n    component: function component() {\n      return <DocumentList {...config} />\n    },\n    layout: config.layout,\n  }\n}\n"],"mappings":"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"}
\ No newline at end of file
Index: package/dist/index.d.ts
===================================================================
--- package/dist/index.d.ts
+++ package/dist/index.d.ts
@@ -1,4 +1,5 @@
+import "@sanity/ui/styles.css";
 import { DashboardWidget, LayoutConfig } from "@sanity/dashboard";
 import "react";
 interface DocumentListConfig {
   title?: string;