sanity-plugin-dashboard-widget-document-list 3.0.0-studio-v3.1 → 3.0.0-studio-v3.4

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.
package/README.md CHANGED
@@ -1,5 +1,4 @@
1
- # dashboard-widget-document-list
2
- [dashboard-plugin]: https://github.com/sanity-io/v3-temp-sanity-dashboard/tree/v3
1
+ # sanity-plugin-dashboard-widget-document-list
3
2
 
4
3
  > **NOTE**
5
4
  >
@@ -14,16 +13,16 @@ Dashboard widget for the Sanity Content Studio which displays a list of document
14
13
  ## Install
15
14
 
16
15
  ```
17
- npm install --save dashboard-widget-document-list@studio-v3
16
+ npm install --save sanity-plugin-dashboard-widget-document-list@studio-v3
18
17
  ```
19
18
 
20
19
  or
21
20
 
22
21
  ```
23
- yarn add dashboard-widget-document-list@studio-v3
22
+ yarn add sanity-plugin-dashboard-widget-document-list@studio-v3
24
23
  ```
25
24
 
26
- Ensure that you have followed install and usage instructions for [@sanity/dashboard][dashboard-plugin].
25
+ Ensure that you have followed install and usage instructions for @sanity/dashboard.
27
26
 
28
27
  ## Usage
29
28
 
package/lib/cjs/index.js CHANGED
@@ -1,13 +1,13 @@
1
- var $7xGut$reactjsxruntime = require("react/jsx-runtime");
2
- var $7xGut$react = require("react");
3
- var $7xGut$sanity_unstable = require("sanity/_unstable");
4
- var $7xGut$sanity = require("sanity");
5
- var $7xGut$lodash = require("lodash");
6
- var $7xGut$sanityui = require("@sanity/ui");
7
- var $7xGut$sanitydashboard = require("@sanity/dashboard");
8
- var $7xGut$rxjs = require("rxjs");
9
- var $7xGut$rxjsoperators = require("rxjs/operators");
10
- var $7xGut$lodashuniqBy = require("lodash/uniqBy");
1
+ var $dyHF6$reactjsxruntime = require("react/jsx-runtime");
2
+ var $dyHF6$react = require("react");
3
+ var $dyHF6$sanity_unstable = require("sanity/_unstable");
4
+ var $dyHF6$sanity = require("sanity");
5
+ var $dyHF6$lodash = require("lodash");
6
+ var $dyHF6$sanityui = require("@sanity/ui");
7
+ var $dyHF6$sanitydashboard = require("@sanity/dashboard");
8
+ var $dyHF6$rxjs = require("rxjs");
9
+ var $dyHF6$rxjsoperators = require("rxjs/operators");
10
+ var $dyHF6$lodashuniqBy = require("lodash/uniqBy");
11
11
 
12
12
  function $parcel$export(e, n, v, s) {
13
13
  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
@@ -16,7 +16,7 @@ function $parcel$interopDefault(a) {
16
16
  return a && a.__esModule ? a.default : a;
17
17
  }
18
18
 
19
- $parcel$export(module.exports, "documentListWidget", () => $9233cea927cb9637$export$398a1547d616c51);
19
+ $parcel$export(module.exports, "documentListWidget", () => $329a1cedcedb1349$export$398a1547d616c51);
20
20
 
21
21
 
22
22
 
@@ -26,26 +26,26 @@ $parcel$export(module.exports, "documentListWidget", () => $9233cea927cb9637$exp
26
26
 
27
27
 
28
28
 
29
- const $91d1c422801a90a3$var$draftId = (nonDraftDoc)=>`drafts.${nonDraftDoc._id}`;
30
- function $91d1c422801a90a3$var$prepareDocumentList(incoming, client) {
29
+ const $6c42894abb5630df$var$draftId = (nonDraftDoc)=>`drafts.${nonDraftDoc._id}`;
30
+ function $6c42894abb5630df$var$prepareDocumentList(incoming, client) {
31
31
  if (!incoming) return Promise.resolve([]);
32
32
  const documents = Array.isArray(incoming) ? incoming : [
33
33
  incoming
34
34
  ];
35
- const ids = documents.filter((doc)=>!doc._id.startsWith("drafts.")).map($91d1c422801a90a3$var$draftId);
35
+ const ids = documents.filter((doc)=>!doc._id.startsWith("drafts.")).map($6c42894abb5630df$var$draftId);
36
36
  return client.fetch("*[_id in $ids]", {
37
37
  ids: ids
38
38
  }).then((drafts)=>{
39
39
  const outgoing = documents.map((doc)=>{
40
- const foundDraft = drafts.find((draft)=>draft._id === $91d1c422801a90a3$var$draftId(doc));
40
+ const foundDraft = drafts.find((draft)=>draft._id === $6c42894abb5630df$var$draftId(doc));
41
41
  return foundDraft || doc;
42
42
  });
43
- return (0, ($parcel$interopDefault($7xGut$lodashuniqBy)))(outgoing, "_id");
43
+ return (0, ($parcel$interopDefault($dyHF6$lodashuniqBy)))(outgoing, "_id");
44
44
  }).catch((error)=>{
45
45
  throw new Error(`Problems fetching docs ${ids}. Error: ${error.message}`);
46
46
  });
47
47
  }
48
- function $91d1c422801a90a3$export$161e8c29756c0df4(query, params, client) {
48
+ function $6c42894abb5630df$export$161e8c29756c0df4(query, params, client) {
49
49
  return client.listen(query, params, {
50
50
  events: [
51
51
  "welcome",
@@ -53,9 +53,9 @@ function $91d1c422801a90a3$export$161e8c29756c0df4(query, params, client) {
53
53
  ],
54
54
  includeResult: false,
55
55
  visibility: "query"
56
- }).pipe((0, $7xGut$rxjsoperators.switchMap)((event)=>{
57
- return (0, $7xGut$rxjs.of)(1).pipe(event.type === "welcome" ? (0, $7xGut$rxjsoperators.tap)() : (0, $7xGut$rxjsoperators.delay)(1000), (0, $7xGut$rxjsoperators.mergeMap)(()=>client.fetch(query, params).then((incoming)=>{
58
- return $91d1c422801a90a3$var$prepareDocumentList(incoming, client);
56
+ }).pipe((0, $dyHF6$rxjsoperators.switchMap)((event)=>{
57
+ return (0, $dyHF6$rxjs.of)(1).pipe(event.type === "welcome" ? (0, $dyHF6$rxjsoperators.tap)() : (0, $dyHF6$rxjsoperators.delay)(1000), (0, $dyHF6$rxjsoperators.mergeMap)(()=>client.fetch(query, params).then((incoming)=>{
58
+ return $6c42894abb5630df$var$prepareDocumentList(incoming, client);
59
59
  }).catch((error)=>{
60
60
  if (error.message.startsWith("Problems fetching docs")) throw error;
61
61
  throw new Error(`Query failed ${query} and ${JSON.stringify(params)}. Error: ${error.message}`);
@@ -66,7 +66,7 @@ function $91d1c422801a90a3$export$161e8c29756c0df4(query, params, client) {
66
66
 
67
67
 
68
68
 
69
- const $77d50d608d9ace00$var$defaultProps = {
69
+ const $e42088711c73f0c3$var$defaultProps = {
70
70
  title: "Last created",
71
71
  order: "_createdAt desc",
72
72
  limit: 10,
@@ -74,23 +74,23 @@ const $77d50d608d9ace00$var$defaultProps = {
74
74
  showCreateButton: true,
75
75
  apiVersion: "v1"
76
76
  };
77
- function $77d50d608d9ace00$export$65a803c9e13a7e5b(props) {
77
+ function $e42088711c73f0c3$export$65a803c9e13a7e5b(props) {
78
78
  const { query: query , limit: limit , apiVersion: apiVersion , queryParams: queryParams , types: types , order: order , title: title , showCreateButton: showCreateButton , createButtonText: createButtonText , } = {
79
- ...$77d50d608d9ace00$var$defaultProps,
79
+ ...$e42088711c73f0c3$var$defaultProps,
80
80
  ...props
81
81
  };
82
- const [documents, setDocuments] = (0, $7xGut$react.useState)();
83
- const [loading, setLoading] = (0, $7xGut$react.useState)(true);
84
- const [error, setError] = (0, $7xGut$react.useState)();
85
- const client = (0, $7xGut$sanity.useClient)();
86
- const schema = (0, $7xGut$sanity.useSchema)();
87
- const versionedClient = (0, $7xGut$react.useMemo)(()=>client.withConfig({
82
+ const [documents, setDocuments] = (0, $dyHF6$react.useState)();
83
+ const [loading, setLoading] = (0, $dyHF6$react.useState)(true);
84
+ const [error, setError] = (0, $dyHF6$react.useState)();
85
+ const client = (0, $dyHF6$sanity.useClient)();
86
+ const schema = (0, $dyHF6$sanity.useSchema)();
87
+ const versionedClient = (0, $dyHF6$react.useMemo)(()=>client.withConfig({
88
88
  apiVersion: apiVersion
89
89
  }), [
90
90
  client,
91
91
  apiVersion
92
92
  ]);
93
- const { assembledQuery: assembledQuery , params: params } = (0, $7xGut$react.useMemo)(()=>{
93
+ const { assembledQuery: assembledQuery , params: params } = (0, $dyHF6$react.useMemo)(()=>{
94
94
  if (query) return {
95
95
  assembledQuery: query,
96
96
  params: queryParams
@@ -102,7 +102,7 @@ function $77d50d608d9ace00$export$65a803c9e13a7e5b(props) {
102
102
  return {
103
103
  assembledQuery: `*[_type in $types] | order(${order}) [0...${limit * 2}]`,
104
104
  params: {
105
- types: types ? (0, $7xGut$lodash.intersection)(types, documentTypes) : documentTypes
105
+ types: types ? (0, $dyHF6$lodash.intersection)(types, documentTypes) : documentTypes
106
106
  }
107
107
  };
108
108
  }, [
@@ -113,9 +113,9 @@ function $77d50d608d9ace00$export$65a803c9e13a7e5b(props) {
113
113
  limit,
114
114
  types
115
115
  ]);
116
- (0, $7xGut$react.useEffect)(()=>{
116
+ (0, $dyHF6$react.useEffect)(()=>{
117
117
  if (!assembledQuery) return;
118
- const subscription = (0, $91d1c422801a90a3$export$161e8c29756c0df4)(assembledQuery, params, versionedClient).subscribe({
118
+ const subscription = (0, $6c42894abb5630df$export$161e8c29756c0df4)(assembledQuery, params, versionedClient).subscribe({
119
119
  next: (d)=>{
120
120
  setDocuments(d.slice(0, limit));
121
121
  setLoading(false);
@@ -135,9 +135,9 @@ function $77d50d608d9ace00$export$65a803c9e13a7e5b(props) {
135
135
  assembledQuery,
136
136
  params
137
137
  ]);
138
- return /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanitydashboard.DashboardWidgetContainer), {
138
+ return /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanitydashboard.DashboardWidgetContainer), {
139
139
  header: title,
140
- footer: types && types.length === 1 && showCreateButton && /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanity_unstable.IntentButton), {
140
+ footer: types && types.length === 1 && showCreateButton && /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanity_unstable.IntentButton), {
141
141
  mode: "bleed",
142
142
  style: {
143
143
  width: "100%"
@@ -152,26 +152,26 @@ function $77d50d608d9ace00$export$65a803c9e13a7e5b(props) {
152
152
  },
153
153
  text: createButtonText || `Create new ${types[0]}`
154
154
  }),
155
- children: /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsxs)((0, $7xGut$sanityui.Card), {
155
+ children: /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsxs)((0, $dyHF6$sanityui.Card), {
156
156
  children: [
157
- error && /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)("div", {
157
+ error && /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)("div", {
158
158
  children: error.message
159
159
  }),
160
- !error && loading && /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanityui.Card), {
160
+ !error && loading && /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanityui.Card), {
161
161
  padding: 4,
162
- children: /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanityui.Flex), {
162
+ children: /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanityui.Flex), {
163
163
  justify: "center",
164
- children: /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanityui.Spinner), {
164
+ children: /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanityui.Spinner), {
165
165
  muted: true
166
166
  })
167
167
  })
168
168
  }),
169
- !error && !documents && !loading && /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)("div", {
169
+ !error && !documents && !loading && /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)("div", {
170
170
  children: "Could not locate any documents :/"
171
171
  }),
172
- /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanityui.Stack), {
172
+ /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanityui.Stack), {
173
173
  space: 2,
174
- children: documents && documents.map((doc)=>/*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)($77d50d608d9ace00$var$MenuEntry, {
174
+ children: documents && documents.map((doc)=>/*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)($e42088711c73f0c3$var$MenuEntry, {
175
175
  doc: doc
176
176
  }, doc._id))
177
177
  })
@@ -179,40 +179,40 @@ function $77d50d608d9ace00$export$65a803c9e13a7e5b(props) {
179
179
  })
180
180
  });
181
181
  }
182
- function $77d50d608d9ace00$var$MenuEntry({ doc: doc }) {
183
- const schema = (0, $7xGut$sanity.useSchema)();
182
+ function $e42088711c73f0c3$var$MenuEntry({ doc: doc }) {
183
+ const schema = (0, $dyHF6$sanity.useSchema)();
184
184
  const type = schema.get(doc._type);
185
- return /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanityui.Card), {
185
+ return /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanityui.Card), {
186
186
  flex: 1,
187
- children: /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanity_unstable.IntentButton), {
187
+ children: /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanity_unstable.IntentButton), {
188
188
  intent: "edit",
189
189
  mode: "bleed",
190
190
  padding: 1,
191
191
  radius: 0,
192
192
  params: {
193
193
  type: doc._type,
194
- id: (0, $7xGut$sanity.getPublishedId)(doc._id)
194
+ id: (0, $dyHF6$sanity.getPublishedId)(doc._id)
195
195
  },
196
196
  style: {
197
197
  width: "100%"
198
198
  },
199
- children: /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $7xGut$sanity_unstable.SanityPreview), {
199
+ children: /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $dyHF6$sanity_unstable.SanityPreview), {
200
200
  layout: "default",
201
- type: type,
201
+ schemaType: type,
202
202
  value: doc
203
203
  }, doc._id)
204
204
  })
205
205
  });
206
206
  }
207
- var $77d50d608d9ace00$export$2e2bcd8739ae039 = $77d50d608d9ace00$export$65a803c9e13a7e5b;
207
+ var $e42088711c73f0c3$export$2e2bcd8739ae039 = $e42088711c73f0c3$export$65a803c9e13a7e5b;
208
208
 
209
209
 
210
210
 
211
- function $9233cea927cb9637$export$398a1547d616c51(config) {
211
+ function $329a1cedcedb1349$export$398a1547d616c51(config) {
212
212
  return {
213
213
  name: "document-list-widget",
214
214
  component: function component() {
215
- return /*#__PURE__*/ (0, $7xGut$reactjsxruntime.jsx)((0, $77d50d608d9ace00$export$2e2bcd8739ae039), {
215
+ return /*#__PURE__*/ (0, $dyHF6$reactjsxruntime.jsx)((0, $e42088711c73f0c3$export$2e2bcd8739ae039), {
216
216
  ...config
217
217
  });
218
218
  },
@@ -1 +1 @@
1
- {"mappings":"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","sources":["src/index.tsx","src/DocumentList.tsx","src/sanityConnector.ts"],"sourcesContent":["import DocumentList, {DocumentListConfig} from './DocumentList'\nimport React from 'react'\nimport {LayoutConfig, DashboardWidget} from '@sanity/dashboard'\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","import React, {useEffect, useMemo, useState} from 'react'\nimport {IntentButton, SanityPreview} from 'sanity/_unstable'\nimport {getPublishedId, useClient, useSchema} from 'sanity'\nimport {intersection} from 'lodash'\nimport {getSubscription} from './sanityConnector'\nimport {SanityDocument} from '@sanity/types'\nimport {Card, Flex, Spinner, Stack} from '@sanity/ui'\nimport {DashboardWidgetContainer} from '@sanity/dashboard'\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\nexport function DocumentList(props: DocumentListConfig) {\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 client = useClient()\n const schema = useSchema()\n const versionedClient = useMemo(() => client.withConfig({apiVersion}), [client, apiVersion])\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 && 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 space={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 padding={1}\n radius={0}\n params={{\n type: doc._type,\n id: getPublishedId(doc._id),\n }}\n style={{width: '100%'}}\n >\n <SanityPreview layout=\"default\" type={type} value={doc} key={doc._id} />\n </IntentButton>\n </Card>\n )\n}\n\nexport default DocumentList\n","import {Observable, of as observableOf} from 'rxjs'\nimport {delay, mergeMap, switchMap, tap} from 'rxjs/operators'\nimport uniqBy from 'lodash/uniqBy'\nimport {SanityClient} from '@sanity/client'\nimport {SanityDocument} from '@sanity/types'\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('*[_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}. 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"],"names":[],"version":3,"file":"index.js.map"}
1
+ {"mappings":"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","sources":["src/index.tsx","src/DocumentList.tsx","src/sanityConnector.ts"],"sourcesContent":["import DocumentList, {DocumentListConfig} from './DocumentList'\nimport React from 'react'\nimport {LayoutConfig, DashboardWidget} from '@sanity/dashboard'\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","import React, {useEffect, useMemo, useState} from 'react'\nimport {IntentButton, SanityPreview} from 'sanity/_unstable'\nimport {getPublishedId, useClient, useSchema} from 'sanity'\nimport {intersection} from 'lodash'\nimport {getSubscription} from './sanityConnector'\nimport {SanityDocument} from 'sanity'\nimport {Card, Flex, Spinner, Stack} from '@sanity/ui'\nimport {DashboardWidgetContainer} from '@sanity/dashboard'\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\nexport function DocumentList(props: DocumentListConfig) {\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 client = useClient()\n const schema = useSchema()\n const versionedClient = useMemo(() => client.withConfig({apiVersion}), [client, apiVersion])\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 && 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 space={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 padding={1}\n radius={0}\n params={{\n type: doc._type,\n id: getPublishedId(doc._id),\n }}\n style={{width: '100%'}}\n >\n <SanityPreview layout=\"default\" schemaType={type} value={doc} key={doc._id} />\n </IntentButton>\n </Card>\n )\n}\n\nexport default DocumentList\n","import {Observable, of as observableOf} from 'rxjs'\nimport {delay, mergeMap, switchMap, tap} from 'rxjs/operators'\nimport uniqBy from 'lodash/uniqBy'\nimport {SanityClient} from '@sanity/client'\nimport {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('*[_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}. 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"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../"}
package/lib/esm/index.js CHANGED
@@ -1,13 +1,13 @@
1
- import {jsx as $5lYf0$jsx, jsxs as $5lYf0$jsxs} from "react/jsx-runtime";
2
- import {useState as $5lYf0$useState, useMemo as $5lYf0$useMemo, useEffect as $5lYf0$useEffect} from "react";
3
- import {IntentButton as $5lYf0$IntentButton, SanityPreview as $5lYf0$SanityPreview} from "sanity/_unstable";
4
- import {useClient as $5lYf0$useClient, useSchema as $5lYf0$useSchema, getPublishedId as $5lYf0$getPublishedId} from "sanity";
5
- import {intersection as $5lYf0$intersection} from "lodash";
6
- import {Card as $5lYf0$Card, Flex as $5lYf0$Flex, Spinner as $5lYf0$Spinner, Stack as $5lYf0$Stack} from "@sanity/ui";
7
- import {DashboardWidgetContainer as $5lYf0$DashboardWidgetContainer} from "@sanity/dashboard";
8
- import {of as $5lYf0$of} from "rxjs";
9
- import {switchMap as $5lYf0$switchMap, tap as $5lYf0$tap, delay as $5lYf0$delay, mergeMap as $5lYf0$mergeMap} from "rxjs/operators";
10
- import $5lYf0$lodashuniqBy from "lodash/uniqBy";
1
+ import {jsx as $7XdDa$jsx, jsxs as $7XdDa$jsxs} from "react/jsx-runtime";
2
+ import {useState as $7XdDa$useState, useMemo as $7XdDa$useMemo, useEffect as $7XdDa$useEffect} from "react";
3
+ import {IntentButton as $7XdDa$IntentButton, SanityPreview as $7XdDa$SanityPreview} from "sanity/_unstable";
4
+ import {useClient as $7XdDa$useClient, useSchema as $7XdDa$useSchema, getPublishedId as $7XdDa$getPublishedId} from "sanity";
5
+ import {intersection as $7XdDa$intersection} from "lodash";
6
+ import {Card as $7XdDa$Card, Flex as $7XdDa$Flex, Spinner as $7XdDa$Spinner, Stack as $7XdDa$Stack} from "@sanity/ui";
7
+ import {DashboardWidgetContainer as $7XdDa$DashboardWidgetContainer} from "@sanity/dashboard";
8
+ import {of as $7XdDa$of} from "rxjs";
9
+ import {switchMap as $7XdDa$switchMap, tap as $7XdDa$tap, delay as $7XdDa$delay, mergeMap as $7XdDa$mergeMap} from "rxjs/operators";
10
+ import $7XdDa$lodashuniqBy from "lodash/uniqBy";
11
11
 
12
12
 
13
13
 
@@ -18,26 +18,26 @@ import $5lYf0$lodashuniqBy from "lodash/uniqBy";
18
18
 
19
19
 
20
20
 
21
- const $31d241600102c2cb$var$draftId = (nonDraftDoc)=>`drafts.${nonDraftDoc._id}`;
22
- function $31d241600102c2cb$var$prepareDocumentList(incoming, client) {
21
+ const $914647a7a6d7825a$var$draftId = (nonDraftDoc)=>`drafts.${nonDraftDoc._id}`;
22
+ function $914647a7a6d7825a$var$prepareDocumentList(incoming, client) {
23
23
  if (!incoming) return Promise.resolve([]);
24
24
  const documents = Array.isArray(incoming) ? incoming : [
25
25
  incoming
26
26
  ];
27
- const ids = documents.filter((doc)=>!doc._id.startsWith("drafts.")).map($31d241600102c2cb$var$draftId);
27
+ const ids = documents.filter((doc)=>!doc._id.startsWith("drafts.")).map($914647a7a6d7825a$var$draftId);
28
28
  return client.fetch("*[_id in $ids]", {
29
29
  ids: ids
30
30
  }).then((drafts)=>{
31
31
  const outgoing = documents.map((doc)=>{
32
- const foundDraft = drafts.find((draft)=>draft._id === $31d241600102c2cb$var$draftId(doc));
32
+ const foundDraft = drafts.find((draft)=>draft._id === $914647a7a6d7825a$var$draftId(doc));
33
33
  return foundDraft || doc;
34
34
  });
35
- return (0, $5lYf0$lodashuniqBy)(outgoing, "_id");
35
+ return (0, $7XdDa$lodashuniqBy)(outgoing, "_id");
36
36
  }).catch((error)=>{
37
37
  throw new Error(`Problems fetching docs ${ids}. Error: ${error.message}`);
38
38
  });
39
39
  }
40
- function $31d241600102c2cb$export$161e8c29756c0df4(query, params, client) {
40
+ function $914647a7a6d7825a$export$161e8c29756c0df4(query, params, client) {
41
41
  return client.listen(query, params, {
42
42
  events: [
43
43
  "welcome",
@@ -45,9 +45,9 @@ function $31d241600102c2cb$export$161e8c29756c0df4(query, params, client) {
45
45
  ],
46
46
  includeResult: false,
47
47
  visibility: "query"
48
- }).pipe((0, $5lYf0$switchMap)((event)=>{
49
- return (0, $5lYf0$of)(1).pipe(event.type === "welcome" ? (0, $5lYf0$tap)() : (0, $5lYf0$delay)(1000), (0, $5lYf0$mergeMap)(()=>client.fetch(query, params).then((incoming)=>{
50
- return $31d241600102c2cb$var$prepareDocumentList(incoming, client);
48
+ }).pipe((0, $7XdDa$switchMap)((event)=>{
49
+ return (0, $7XdDa$of)(1).pipe(event.type === "welcome" ? (0, $7XdDa$tap)() : (0, $7XdDa$delay)(1000), (0, $7XdDa$mergeMap)(()=>client.fetch(query, params).then((incoming)=>{
50
+ return $914647a7a6d7825a$var$prepareDocumentList(incoming, client);
51
51
  }).catch((error)=>{
52
52
  if (error.message.startsWith("Problems fetching docs")) throw error;
53
53
  throw new Error(`Query failed ${query} and ${JSON.stringify(params)}. Error: ${error.message}`);
@@ -58,7 +58,7 @@ function $31d241600102c2cb$export$161e8c29756c0df4(query, params, client) {
58
58
 
59
59
 
60
60
 
61
- const $df774c2b801774e3$var$defaultProps = {
61
+ const $5f7d6b06745a3b7d$var$defaultProps = {
62
62
  title: "Last created",
63
63
  order: "_createdAt desc",
64
64
  limit: 10,
@@ -66,23 +66,23 @@ const $df774c2b801774e3$var$defaultProps = {
66
66
  showCreateButton: true,
67
67
  apiVersion: "v1"
68
68
  };
69
- function $df774c2b801774e3$export$65a803c9e13a7e5b(props) {
69
+ function $5f7d6b06745a3b7d$export$65a803c9e13a7e5b(props) {
70
70
  const { query: query , limit: limit , apiVersion: apiVersion , queryParams: queryParams , types: types , order: order , title: title , showCreateButton: showCreateButton , createButtonText: createButtonText , } = {
71
- ...$df774c2b801774e3$var$defaultProps,
71
+ ...$5f7d6b06745a3b7d$var$defaultProps,
72
72
  ...props
73
73
  };
74
- const [documents, setDocuments] = (0, $5lYf0$useState)();
75
- const [loading, setLoading] = (0, $5lYf0$useState)(true);
76
- const [error, setError] = (0, $5lYf0$useState)();
77
- const client = (0, $5lYf0$useClient)();
78
- const schema = (0, $5lYf0$useSchema)();
79
- const versionedClient = (0, $5lYf0$useMemo)(()=>client.withConfig({
74
+ const [documents, setDocuments] = (0, $7XdDa$useState)();
75
+ const [loading, setLoading] = (0, $7XdDa$useState)(true);
76
+ const [error, setError] = (0, $7XdDa$useState)();
77
+ const client = (0, $7XdDa$useClient)();
78
+ const schema = (0, $7XdDa$useSchema)();
79
+ const versionedClient = (0, $7XdDa$useMemo)(()=>client.withConfig({
80
80
  apiVersion: apiVersion
81
81
  }), [
82
82
  client,
83
83
  apiVersion
84
84
  ]);
85
- const { assembledQuery: assembledQuery , params: params } = (0, $5lYf0$useMemo)(()=>{
85
+ const { assembledQuery: assembledQuery , params: params } = (0, $7XdDa$useMemo)(()=>{
86
86
  if (query) return {
87
87
  assembledQuery: query,
88
88
  params: queryParams
@@ -94,7 +94,7 @@ function $df774c2b801774e3$export$65a803c9e13a7e5b(props) {
94
94
  return {
95
95
  assembledQuery: `*[_type in $types] | order(${order}) [0...${limit * 2}]`,
96
96
  params: {
97
- types: types ? (0, $5lYf0$intersection)(types, documentTypes) : documentTypes
97
+ types: types ? (0, $7XdDa$intersection)(types, documentTypes) : documentTypes
98
98
  }
99
99
  };
100
100
  }, [
@@ -105,9 +105,9 @@ function $df774c2b801774e3$export$65a803c9e13a7e5b(props) {
105
105
  limit,
106
106
  types
107
107
  ]);
108
- (0, $5lYf0$useEffect)(()=>{
108
+ (0, $7XdDa$useEffect)(()=>{
109
109
  if (!assembledQuery) return;
110
- const subscription = (0, $31d241600102c2cb$export$161e8c29756c0df4)(assembledQuery, params, versionedClient).subscribe({
110
+ const subscription = (0, $914647a7a6d7825a$export$161e8c29756c0df4)(assembledQuery, params, versionedClient).subscribe({
111
111
  next: (d)=>{
112
112
  setDocuments(d.slice(0, limit));
113
113
  setLoading(false);
@@ -127,9 +127,9 @@ function $df774c2b801774e3$export$65a803c9e13a7e5b(props) {
127
127
  assembledQuery,
128
128
  params
129
129
  ]);
130
- return /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$DashboardWidgetContainer), {
130
+ return /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$DashboardWidgetContainer), {
131
131
  header: title,
132
- footer: types && types.length === 1 && showCreateButton && /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$IntentButton), {
132
+ footer: types && types.length === 1 && showCreateButton && /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$IntentButton), {
133
133
  mode: "bleed",
134
134
  style: {
135
135
  width: "100%"
@@ -144,26 +144,26 @@ function $df774c2b801774e3$export$65a803c9e13a7e5b(props) {
144
144
  },
145
145
  text: createButtonText || `Create new ${types[0]}`
146
146
  }),
147
- children: /*#__PURE__*/ (0, $5lYf0$jsxs)((0, $5lYf0$Card), {
147
+ children: /*#__PURE__*/ (0, $7XdDa$jsxs)((0, $7XdDa$Card), {
148
148
  children: [
149
- error && /*#__PURE__*/ (0, $5lYf0$jsx)("div", {
149
+ error && /*#__PURE__*/ (0, $7XdDa$jsx)("div", {
150
150
  children: error.message
151
151
  }),
152
- !error && loading && /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$Card), {
152
+ !error && loading && /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$Card), {
153
153
  padding: 4,
154
- children: /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$Flex), {
154
+ children: /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$Flex), {
155
155
  justify: "center",
156
- children: /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$Spinner), {
156
+ children: /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$Spinner), {
157
157
  muted: true
158
158
  })
159
159
  })
160
160
  }),
161
- !error && !documents && !loading && /*#__PURE__*/ (0, $5lYf0$jsx)("div", {
161
+ !error && !documents && !loading && /*#__PURE__*/ (0, $7XdDa$jsx)("div", {
162
162
  children: "Could not locate any documents :/"
163
163
  }),
164
- /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$Stack), {
164
+ /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$Stack), {
165
165
  space: 2,
166
- children: documents && documents.map((doc)=>/*#__PURE__*/ (0, $5lYf0$jsx)($df774c2b801774e3$var$MenuEntry, {
166
+ children: documents && documents.map((doc)=>/*#__PURE__*/ (0, $7XdDa$jsx)($5f7d6b06745a3b7d$var$MenuEntry, {
167
167
  doc: doc
168
168
  }, doc._id))
169
169
  })
@@ -171,40 +171,40 @@ function $df774c2b801774e3$export$65a803c9e13a7e5b(props) {
171
171
  })
172
172
  });
173
173
  }
174
- function $df774c2b801774e3$var$MenuEntry({ doc: doc }) {
175
- const schema = (0, $5lYf0$useSchema)();
174
+ function $5f7d6b06745a3b7d$var$MenuEntry({ doc: doc }) {
175
+ const schema = (0, $7XdDa$useSchema)();
176
176
  const type = schema.get(doc._type);
177
- return /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$Card), {
177
+ return /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$Card), {
178
178
  flex: 1,
179
- children: /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$IntentButton), {
179
+ children: /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$IntentButton), {
180
180
  intent: "edit",
181
181
  mode: "bleed",
182
182
  padding: 1,
183
183
  radius: 0,
184
184
  params: {
185
185
  type: doc._type,
186
- id: (0, $5lYf0$getPublishedId)(doc._id)
186
+ id: (0, $7XdDa$getPublishedId)(doc._id)
187
187
  },
188
188
  style: {
189
189
  width: "100%"
190
190
  },
191
- children: /*#__PURE__*/ (0, $5lYf0$jsx)((0, $5lYf0$SanityPreview), {
191
+ children: /*#__PURE__*/ (0, $7XdDa$jsx)((0, $7XdDa$SanityPreview), {
192
192
  layout: "default",
193
- type: type,
193
+ schemaType: type,
194
194
  value: doc
195
195
  }, doc._id)
196
196
  })
197
197
  });
198
198
  }
199
- var $df774c2b801774e3$export$2e2bcd8739ae039 = $df774c2b801774e3$export$65a803c9e13a7e5b;
199
+ var $5f7d6b06745a3b7d$export$2e2bcd8739ae039 = $5f7d6b06745a3b7d$export$65a803c9e13a7e5b;
200
200
 
201
201
 
202
202
 
203
- function $090815f5086f7f29$export$398a1547d616c51(config) {
203
+ function $357f50a17451fe9f$export$398a1547d616c51(config) {
204
204
  return {
205
205
  name: "document-list-widget",
206
206
  component: function component() {
207
- return /*#__PURE__*/ (0, $5lYf0$jsx)((0, $df774c2b801774e3$export$2e2bcd8739ae039), {
207
+ return /*#__PURE__*/ (0, $7XdDa$jsx)((0, $5f7d6b06745a3b7d$export$2e2bcd8739ae039), {
208
208
  ...config
209
209
  });
210
210
  },
@@ -213,5 +213,5 @@ function $090815f5086f7f29$export$398a1547d616c51(config) {
213
213
  }
214
214
 
215
215
 
216
- export {$090815f5086f7f29$export$398a1547d616c51 as documentListWidget};
216
+ export {$357f50a17451fe9f$export$398a1547d616c51 as documentListWidget};
217
217
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"mappings":"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","sources":["src/index.tsx","src/DocumentList.tsx","src/sanityConnector.ts"],"sourcesContent":["import DocumentList, {DocumentListConfig} from './DocumentList'\nimport React from 'react'\nimport {LayoutConfig, DashboardWidget} from '@sanity/dashboard'\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","import React, {useEffect, useMemo, useState} from 'react'\nimport {IntentButton, SanityPreview} from 'sanity/_unstable'\nimport {getPublishedId, useClient, useSchema} from 'sanity'\nimport {intersection} from 'lodash'\nimport {getSubscription} from './sanityConnector'\nimport {SanityDocument} from '@sanity/types'\nimport {Card, Flex, Spinner, Stack} from '@sanity/ui'\nimport {DashboardWidgetContainer} from '@sanity/dashboard'\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\nexport function DocumentList(props: DocumentListConfig) {\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 client = useClient()\n const schema = useSchema()\n const versionedClient = useMemo(() => client.withConfig({apiVersion}), [client, apiVersion])\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 && 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 space={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 padding={1}\n radius={0}\n params={{\n type: doc._type,\n id: getPublishedId(doc._id),\n }}\n style={{width: '100%'}}\n >\n <SanityPreview layout=\"default\" type={type} value={doc} key={doc._id} />\n </IntentButton>\n </Card>\n )\n}\n\nexport default DocumentList\n","import {Observable, of as observableOf} from 'rxjs'\nimport {delay, mergeMap, switchMap, tap} from 'rxjs/operators'\nimport uniqBy from 'lodash/uniqBy'\nimport {SanityClient} from '@sanity/client'\nimport {SanityDocument} from '@sanity/types'\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('*[_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}. 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"],"names":[],"version":3,"file":"index.js.map"}
1
+ {"mappings":"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","sources":["src/index.tsx","src/DocumentList.tsx","src/sanityConnector.ts"],"sourcesContent":["import DocumentList, {DocumentListConfig} from './DocumentList'\nimport React from 'react'\nimport {LayoutConfig, DashboardWidget} from '@sanity/dashboard'\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","import React, {useEffect, useMemo, useState} from 'react'\nimport {IntentButton, SanityPreview} from 'sanity/_unstable'\nimport {getPublishedId, useClient, useSchema} from 'sanity'\nimport {intersection} from 'lodash'\nimport {getSubscription} from './sanityConnector'\nimport {SanityDocument} from 'sanity'\nimport {Card, Flex, Spinner, Stack} from '@sanity/ui'\nimport {DashboardWidgetContainer} from '@sanity/dashboard'\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\nexport function DocumentList(props: DocumentListConfig) {\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 client = useClient()\n const schema = useSchema()\n const versionedClient = useMemo(() => client.withConfig({apiVersion}), [client, apiVersion])\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 && 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 space={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 padding={1}\n radius={0}\n params={{\n type: doc._type,\n id: getPublishedId(doc._id),\n }}\n style={{width: '100%'}}\n >\n <SanityPreview layout=\"default\" schemaType={type} value={doc} key={doc._id} />\n </IntentButton>\n </Card>\n )\n}\n\nexport default DocumentList\n","import {Observable, of as observableOf} from 'rxjs'\nimport {delay, mergeMap, switchMap, tap} from 'rxjs/operators'\nimport uniqBy from 'lodash/uniqBy'\nimport {SanityClient} from '@sanity/client'\nimport {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('*[_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}. 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"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../"}
@@ -1 +1 @@
1
- {"mappings":";ACSA;IACE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;ACfD,yCAA0C,SAAQ,kBAAkB;IAClE,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,mCAAmC,MAAM,EAAE,wBAAwB,GAAG,eAAe,CAQpF","sources":["src/src/sanityConnector.ts","src/src/DocumentList.tsx","src/src/index.tsx","src/index.tsx"],"sourcesContent":[null,null,null,"import DocumentList, {DocumentListConfig} from './DocumentList'\nimport React from 'react'\nimport {LayoutConfig, DashboardWidget} from '@sanity/dashboard'\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"],"names":[],"version":3,"file":"index.d.ts.map"}
1
+ {"mappings":";ACSA;IACE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;ACfD,yCAA0C,SAAQ,kBAAkB;IAClE,MAAM,CAAC,EAAE,YAAY,CAAA;CACtB;AAED,mCAAmC,MAAM,EAAE,wBAAwB,GAAG,eAAe,CAQpF","sources":["src/src/sanityConnector.ts","src/src/DocumentList.tsx","src/src/index.tsx","src/index.tsx"],"sourcesContent":[null,null,null,"import DocumentList, {DocumentListConfig} from './DocumentList'\nimport React from 'react'\nimport {LayoutConfig, DashboardWidget} from '@sanity/dashboard'\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"],"names":[],"version":3,"file":"index.d.ts.map","sourceRoot":"../../"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "public": true,
3
3
  "name": "sanity-plugin-dashboard-widget-document-list",
4
- "version": "3.0.0-studio-v3.1",
4
+ "version": "3.0.0-studio-v3.4",
5
5
  "author": "Sanity.io <hello@sanity.io>",
6
6
  "description": "Example dashboard widget for Sanity Content Studio",
7
7
  "homepage": "https://github.com/sanity-io/dashboard-widget-document-list#readme",
@@ -25,13 +25,16 @@
25
25
  "types": "./lib/types/index.d.ts",
26
26
  "files": [
27
27
  "src",
28
- "lib"
28
+ "lib",
29
+ "v2-incompatible.js",
30
+ "sanity.json"
29
31
  ],
30
32
  "scripts": {
31
33
  "clean": "rimraf lib",
32
- "prebuild": "npm run clean && tsc --noEmit",
33
- "build": "parcel build",
34
+ "prebuild": "npm run clean && plugin-kit verify-package --silent",
35
+ "build": "parcel build --no-cache",
34
36
  "watch": "parcel watch",
37
+ "link-watch": "plugin-kit link-watch",
35
38
  "prepublishOnly": "npm run build",
36
39
  "compile": "tsc --noEmit",
37
40
  "lint": "eslint ."
@@ -45,11 +48,14 @@
45
48
  "type": "git",
46
49
  "url": "git+https://github.com/sanity-io/dashboard-widget-document-list.git"
47
50
  },
51
+ "sanityExchangeUrl": "https://www.sanity.io/plugins/sanity-plugin-dashboard-widget-document-list",
48
52
  "devDependencies": {
49
53
  "@commitlint/cli": "^16.2.4",
50
54
  "@commitlint/config-conventional": "^16.2.4",
51
55
  "@parcel/packager-ts": "^2.6.0",
52
56
  "@parcel/transformer-typescript-types": "^2.6.0",
57
+ "@sanity/dashboard": "^3.0.0-studio-v3.2",
58
+ "@sanity/plugin-kit": "^0.0.1-studio-v3.4",
53
59
  "@types/react": "^17.0.0 || ^18.0.0",
54
60
  "@typescript-eslint/eslint-plugin": "^5.12.0",
55
61
  "@typescript-eslint/parser": "^5.12.0",
@@ -64,17 +70,21 @@
64
70
  "prettier": "^2.6.2",
65
71
  "react": "^17.0.0 || ^18.0.0",
66
72
  "rimraf": "^3.0.2",
67
- "sanity": "2.29.5-purple-unicorn.856",
73
+ "sanity": "^2.30.1-purple-unicorn.964",
68
74
  "typescript": "^4.7.3"
69
75
  },
70
76
  "peerDependencies": {
71
77
  "react": "^17.0.0 || ^18.0.0",
72
- "sanity": "2.29.5-purple-unicorn.856"
78
+ "sanity": "purple-unicorn",
79
+ "@sanity/dashboard": "studio-v3"
73
80
  },
74
81
  "dependencies": {
75
82
  "@sanity/ui": "^0.37.9",
76
- "@sanity/dashboard": "studio-v3",
83
+ "@sanity/incompatible-plugin": "^0.0.1-studio-v3.1",
77
84
  "lodash": "^4.17.15",
78
85
  "rxjs": "^6.0.0"
86
+ },
87
+ "engines": {
88
+ "node": ">=14.0.0"
79
89
  }
80
90
  }
package/sanity.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "parts": [
3
+ {
4
+ "implements": "part:@sanity/base/sanity-root",
5
+ "path": "./v2-incompatible.js"
6
+ }
7
+ ]
8
+ }
@@ -3,7 +3,7 @@ import {IntentButton, SanityPreview} from 'sanity/_unstable'
3
3
  import {getPublishedId, useClient, useSchema} from 'sanity'
4
4
  import {intersection} from 'lodash'
5
5
  import {getSubscription} from './sanityConnector'
6
- import {SanityDocument} from '@sanity/types'
6
+ import {SanityDocument} from 'sanity'
7
7
  import {Card, Flex, Spinner, Stack} from '@sanity/ui'
8
8
  import {DashboardWidgetContainer} from '@sanity/dashboard'
9
9
 
@@ -144,7 +144,7 @@ function MenuEntry({doc}: {doc: SanityDocument}) {
144
144
  }}
145
145
  style={{width: '100%'}}
146
146
  >
147
- <SanityPreview layout="default" type={type} value={doc} key={doc._id} />
147
+ <SanityPreview layout="default" schemaType={type} value={doc} key={doc._id} />
148
148
  </IntentButton>
149
149
  </Card>
150
150
  )
@@ -2,7 +2,7 @@ import {Observable, of as observableOf} from 'rxjs'
2
2
  import {delay, mergeMap, switchMap, tap} from 'rxjs/operators'
3
3
  import uniqBy from 'lodash/uniqBy'
4
4
  import {SanityClient} from '@sanity/client'
5
- import {SanityDocument} from '@sanity/types'
5
+ import {SanityDocument} from 'sanity'
6
6
 
7
7
  const draftId = (nonDraftDoc: SanityDocument) => `drafts.${nonDraftDoc._id}`
8
8
 
@@ -0,0 +1,11 @@
1
+ const { showIncompatiblePluginDialog } = require('@sanity/incompatible-plugin')
2
+ const { name, version, sanityExchangeUrl } = require('./package.json')
3
+
4
+ export default showIncompatiblePluginDialog({
5
+ name: name,
6
+ versions: {
7
+ v3: version,
8
+ v2: '^0.2.1',
9
+ },
10
+ sanityExchangeUrl,
11
+ })