sanity-plugin-documents-pane 1.0.5 → 1.0.8

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/.eslintignore ADDED
@@ -0,0 +1 @@
1
+ lib
package/README.md CHANGED
@@ -38,6 +38,10 @@ The `.options()` configuration works as follows:
38
38
  - `useDraft` (bool, optional, default: `false`) When populating the `params` values, it will use the `published` version of the document by default.
39
39
  - `debug` (bool, optional, default: `false`) In case of an error or the query returning no documents, setting to `true` will display the query and params that were used.
40
40
 
41
+ ## Thanks!
42
+
43
+ This plugin is based on [Incoming References](https://github.com/sanity-io/sanity/tree/victoria/incoming-refs-preview/packages/test-studio/src/previews/incoming-refs) originally written by Victoria Bergquist.
44
+
41
45
  ## License
42
46
 
43
47
  MIT © Simeon Griggs
package/lib/Debug.js CHANGED
@@ -7,8 +7,6 @@ exports.default = Debug;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
10
  var _ui = require("@sanity/ui");
13
11
 
14
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -22,13 +20,4 @@ function Debug(_ref) {
22
20
  space: 4
23
21
  }, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Label, null, "Params")), /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Code, null, JSON.stringify(params)))));
24
22
  }
25
-
26
- Debug.propTypes = {
27
- params: _propTypes.default.object,
28
- query: _propTypes.default.string
29
- };
30
- Debug.defaultProps = {
31
- params: {},
32
- query: ""
33
- };
34
23
  //# sourceMappingURL=Debug.js.map
package/lib/Debug.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Debug.js"],"names":["Debug","query","params","JSON","stringify","propTypes","PropTypes","object","string","defaultProps"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;;;AAEe,SAASA,KAAT,OAAgC;AAAA,MAAhBC,KAAgB,QAAhBA,KAAgB;AAAA,MAATC,MAAS,QAATA,MAAS;AAC7C,sBACE,yEACE,6BAAC,SAAD;AAAO,IAAA,KAAK,EAAE;AAAd,kBACE,6BAAC,OAAD,qBAAK,6BAAC,SAAD,gBAAL,CADF,eAEE,6BAAC,OAAD,qBACE,6BAAC,QAAD,QAAOD,KAAP,CADF,CAFF,CADF,eAOE,6BAAC,SAAD;AAAO,IAAA,KAAK,EAAE;AAAd,kBACE,6BAAC,OAAD,qBAAK,6BAAC,SAAD,iBAAL,CADF,eAEE,6BAAC,OAAD,qBACE,6BAAC,QAAD,QAAOE,IAAI,CAACC,SAAL,CAAeF,MAAf,CAAP,CADF,CAFF,CAPF,CADF;AAgBD;;AAEDF,KAAK,CAACK,SAAN,GAAkB;AAChBH,EAAAA,MAAM,EAAEI,mBAAUC,MADF;AAEhBN,EAAAA,KAAK,EAAEK,mBAAUE;AAFD,CAAlB;AAKAR,KAAK,CAACS,YAAN,GAAqB;AACnBP,EAAAA,MAAM,EAAE,EADW;AAEnBD,EAAAA,KAAK;AAFc,CAArB","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport {Code, Box, Label, Stack} from '@sanity/ui'\n\nexport default function Debug({query, params}) {\n return (\n <>\n <Stack space={4}>\n <Box><Label>Query</Label></Box>\n <Box>\n <Code>{query}</Code>\n </Box>\n </Stack>\n <Stack space={4}>\n <Box><Label>Params</Label></Box>\n <Box>\n <Code>{JSON.stringify(params)}</Code>\n </Box>\n </Stack>\n </>\n )\n}\n\nDebug.propTypes = {\n params: PropTypes.object,\n query: PropTypes.string,\n}\n\nDebug.defaultProps = {\n params: {},\n query: ``,\n}\n"],"file":"Debug.js"}
1
+ {"version":3,"file":"Debug.js","names":["Debug","query","params","JSON","stringify"],"sources":["../src/Debug.tsx"],"sourcesContent":["import React from 'react'\nimport {Code, Box, Label, Stack} from '@sanity/ui'\n\nexport default function Debug({query, params}) {\n return (\n <>\n <Stack space={4}>\n <Box><Label>Query</Label></Box>\n <Box>\n <Code>{query}</Code>\n </Box>\n </Stack>\n <Stack space={4}>\n <Box><Label>Params</Label></Box>\n <Box>\n <Code>{JSON.stringify(params)}</Code>\n </Box>\n </Stack>\n </>\n )\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;;;AAEe,SAASA,KAAT,OAAgC;EAAA,IAAhBC,KAAgB,QAAhBA,KAAgB;EAAA,IAATC,MAAS,QAATA,MAAS;EAC7C,oBACE,yEACE,6BAAC,SAAD;IAAO,KAAK,EAAE;EAAd,gBACE,6BAAC,OAAD,qBAAK,6BAAC,SAAD,gBAAL,CADF,eAEE,6BAAC,OAAD,qBACE,6BAAC,QAAD,QAAOD,KAAP,CADF,CAFF,CADF,eAOE,6BAAC,SAAD;IAAO,KAAK,EAAE;EAAd,gBACE,6BAAC,OAAD,qBAAK,6BAAC,SAAD,iBAAL,CADF,eAEE,6BAAC,OAAD,qBACE,6BAAC,QAAD,QAAOE,IAAI,CAACC,SAAL,CAAeF,MAAf,CAAP,CADF,CAFF,CAPF,CADF;AAgBD"}
package/lib/Documents.js CHANGED
@@ -5,37 +5,43 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = Documents;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
8
+ var _react = _interopRequireWildcard(require("react"));
9
9
 
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
10
+ var _reactQuery = require("react-query");
11
11
 
12
- var _router = require("part:@sanity/base/router");
12
+ var _ui = require("@sanity/ui");
13
13
 
14
- var _schema = _interopRequireDefault(require("part:@sanity/base/schema"));
14
+ var _deskTool = require("@sanity/desk-tool");
15
15
 
16
- var _reactQuery = require("react-query");
16
+ var _paths = require("@sanity/util/paths");
17
17
 
18
- var _client = _interopRequireDefault(require("part:@sanity/base/client"));
18
+ var _preview = _interopRequireDefault(require("part:@sanity/base/preview"));
19
19
 
20
- var _ui = require("@sanity/ui");
20
+ var _schema = _interopRequireDefault(require("part:@sanity/base/schema"));
21
21
 
22
- var _preview = _interopRequireDefault(require("part:@sanity/base/preview"));
22
+ var _client = _interopRequireDefault(require("part:@sanity/base/client"));
23
23
 
24
24
  var _Debug = _interopRequireDefault(require("./Debug"));
25
25
 
26
- var _DocumentsModule = _interopRequireDefault(require("./Documents.module.css"));
26
+ var _Feedback = _interopRequireDefault(require("./Feedback"));
27
27
 
28
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
29
 
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ // import {RouterContext} from '@sanity/state-router/lib/RouterContext'
30
35
  var client = _client.default.withConfig({
31
36
  apiVersion: "2021-05-19"
32
37
  });
33
38
 
34
39
  function Documents(props) {
40
+ var _routerPanesState;
41
+
35
42
  var query = props.query,
36
43
  params = props.params,
37
- debug = props.debug,
38
- _rev = props._rev;
44
+ debug = props.debug;
39
45
 
40
46
  var _useQuery = (0, _reactQuery.useQuery)(['useDocuments', {
41
47
  props
@@ -44,15 +50,23 @@ function Documents(props) {
44
50
  error = _useQuery.error,
45
51
  data = _useQuery.data;
46
52
 
47
- if (!_rev) {
48
- return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
49
- padding: 4,
50
- space: 5
51
- }, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Text, null, "Document must be Published")), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
52
- query: query,
53
- params: params
54
- }));
55
- }
53
+ var _usePaneRouter = (0, _deskTool.usePaneRouter)(),
54
+ routerPanesState = _usePaneRouter.routerPanesState,
55
+ groupIndex = _usePaneRouter.groupIndex,
56
+ handleEditReference = _usePaneRouter.handleEditReference;
57
+
58
+ var childParams = ((_routerPanesState = routerPanesState[groupIndex + 1]) === null || _routerPanesState === void 0 ? void 0 : _routerPanesState[0].params) || {};
59
+ var parentRefPath = childParams.parentRefPath;
60
+ var handleClick = (0, _react.useCallback)((id, type) => {
61
+ handleEditReference({
62
+ id,
63
+ type,
64
+ // Uncertain that this works as intended
65
+ parentRefPath: parentRefPath ? (0, _paths.fromString)(parentRefPath) : [""],
66
+ // Added this to satisfy TS
67
+ template: type
68
+ });
69
+ }, [routerPanesState]);
56
70
 
57
71
  if (isLoading) {
58
72
  return /*#__PURE__*/_react.default.createElement(_ui.Box, {
@@ -69,7 +83,7 @@ function Documents(props) {
69
83
  return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
70
84
  padding: 4,
71
85
  space: 5
72
- }, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Text, null, "There was en error performing this query")), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
86
+ }, /*#__PURE__*/_react.default.createElement(_Feedback.default, null, "There was en error performing this query"), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
73
87
  query: query,
74
88
  params: params
75
89
  }));
@@ -79,36 +93,22 @@ function Documents(props) {
79
93
  return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
80
94
  padding: 4,
81
95
  space: 5
82
- }, /*#__PURE__*/_react.default.createElement(_ui.Box, null, /*#__PURE__*/_react.default.createElement(_ui.Text, null, "No Documents found")), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
96
+ }, /*#__PURE__*/_react.default.createElement(_Feedback.default, null, "No Documents found"), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
83
97
  query: query,
84
98
  params: params
85
99
  }));
86
100
  }
87
101
 
88
102
  return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
89
- className: _DocumentsModule.default.root
90
- }, data.map(doc => /*#__PURE__*/_react.default.createElement(_router.IntentLink, {
91
- key: doc._id,
92
- intent: "edit",
93
- params: {
94
- id: doc._id,
95
- type: doc._type
96
- },
97
- className: _DocumentsModule.default.item
103
+ padding: 2,
104
+ space: 1
105
+ }, data.map(doc => /*#__PURE__*/_react.default.createElement(_ui.Button, {
106
+ onClick: () => handleClick(doc._id, doc._type),
107
+ padding: 2,
108
+ mode: "bleed"
98
109
  }, /*#__PURE__*/_react.default.createElement(_preview.default, {
99
110
  value: doc,
100
111
  type: _schema.default.get(doc._type)
101
112
  }))));
102
113
  }
103
-
104
- Documents.propTypes = {
105
- _rev: _propTypes.default.string,
106
- params: _propTypes.default.object,
107
- query: _propTypes.default.string
108
- };
109
- Documents.defaultProps = {
110
- _rev: "",
111
- params: {},
112
- query: ""
113
- };
114
114
  //# sourceMappingURL=Documents.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Documents.js"],"names":["client","sanityClient","withConfig","apiVersion","Documents","props","query","params","debug","_rev","fetch","isLoading","error","data","length","styles","root","map","doc","_id","id","type","_type","item","schema","get","propTypes","PropTypes","string","object","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport {IntentLink} from 'part:@sanity/base/router'\nimport schema from 'part:@sanity/base/schema'\nimport {useQuery} from 'react-query'\nimport sanityClient from 'part:@sanity/base/client'\nimport {Text, Box, Stack, Flex, Spinner} from '@sanity/ui'\nimport Preview from 'part:@sanity/base/preview'\n\nimport Debug from './Debug'\nimport styles from './Documents.module.css'\n\nconst client = sanityClient.withConfig({apiVersion: `2021-05-19`})\n\nexport default function Documents(props) {\n const {query, params, debug, _rev} = props\n\n const {isLoading, error, data} = useQuery(['useDocuments', { props }], () =>\n client.fetch(query, params)\n )\n\n if (!_rev) {\n return (<Stack padding={4} space={5}>\n <Box>\n <Text>Document must be Published</Text>\n </Box>\n {debug && <Debug query={query} params={params} />}\n </Stack>)\n }\n\n if (isLoading) {\n return (\n <Box padding={4}>\n <Flex justify=\"center\" align=\"center\">\n <Spinner muted />\n </Flex>\n </Box>\n )\n }\n\n if (error) {\n return (\n <Stack padding={4} space={5}>\n <Box>\n <Text>There was en error performing this query</Text>\n </Box>\n {debug && <Debug query={query} params={params} />}\n </Stack>\n )\n }\n\n if (!data?.length) {\n return (\n <Stack padding={4} space={5}>\n <Box>\n <Text>No Documents found</Text>\n </Box>\n {debug && <Debug query={query} params={params} />}\n </Stack>\n )\n }\n\n return (\n <Stack className={styles.root}>\n {data.map((doc) => (\n <IntentLink key={doc._id} intent=\"edit\" params={{id: doc._id, type: doc._type}} className={styles.item}>\n <Preview value={doc} type={schema.get(doc._type)} />\n </IntentLink>\n ))}\n </Stack>\n )\n}\n\nDocuments.propTypes = {\n _rev: PropTypes.string,\n params: PropTypes.object,\n query: PropTypes.string,\n}\n\nDocuments.defaultProps = {\n _rev: ``,\n params: {},\n query: ``,\n}\n"],"file":"Documents.js"}
1
+ {"version":3,"file":"Documents.js","names":["client","sanityClient","withConfig","apiVersion","Documents","props","query","params","debug","fetch","isLoading","error","data","routerPanesState","groupIndex","handleEditReference","childParams","parentRefPath","handleClick","id","type","template","length","map","doc","_id","_type","schema","get"],"sources":["../src/Documents.tsx"],"sourcesContent":["import React, {useCallback} from 'react'\nimport {useQuery} from 'react-query'\nimport {Box, Button, Stack, Flex, Spinner} from '@sanity/ui'\nimport {usePaneRouter} from '@sanity/desk-tool'\nimport {fromString as pathFromString} from '@sanity/util/paths'\n// import {RouterContext} from '@sanity/state-router/lib/RouterContext'\nimport Preview from 'part:@sanity/base/preview'\nimport schema from 'part:@sanity/base/schema'\nimport sanityClient from 'part:@sanity/base/client'\n\nimport Debug from './Debug'\nimport Feedback from './Feedback'\n\nconst client = sanityClient.withConfig({apiVersion: `2021-05-19`})\n\nexport default function Documents(props) {\n const {query, params, debug} = props\n\n const {isLoading, error, data} = useQuery(['useDocuments', {props}], () =>\n client.fetch(query, params)\n )\n\n const {routerPanesState, groupIndex, handleEditReference} = usePaneRouter()\n const childParams = routerPanesState[groupIndex + 1]?.[0].params || {}\n const {parentRefPath} = childParams\n\n const handleClick = useCallback((id, type) => {\n handleEditReference({\n id,\n type,\n // Uncertain that this works as intended\n parentRefPath: parentRefPath ? pathFromString(parentRefPath) : [``],\n // Added this to satisfy TS\n template: type,\n })\n }, [routerPanesState])\n\n if (isLoading) {\n return (\n <Box padding={4}>\n <Flex justify=\"center\" align=\"center\">\n <Spinner muted />\n </Flex>\n </Box>\n )\n }\n\n if (error) {\n return (\n <Stack padding={4} space={5}>\n <Feedback>There was en error performing this query</Feedback>\n {debug && <Debug query={query} params={params} />}\n </Stack>\n )\n }\n\n if (!data?.length) {\n return (\n <Stack padding={4} space={5}>\n <Feedback>No Documents found</Feedback>\n {debug && <Debug query={query} params={params} />}\n </Stack>\n )\n }\n\n return (\n <Stack padding={2} space={1}>\n {data.map((doc) => (\n <Button onClick={() => handleClick(doc._id, doc._type)} padding={2} mode=\"bleed\">\n <Preview value={doc} type={schema.get(doc._type)} />\n </Button>\n ))}\n </Stack>\n )\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AAEA;;AACA;;;;;;;;AANA;AAQA,IAAMA,MAAM,GAAGC,gBAAaC,UAAb,CAAwB;EAACC,UAAU;AAAX,CAAxB,CAAf;;AAEe,SAASC,SAAT,CAAmBC,KAAnB,EAA0B;EAAA;;EACvC,IAAOC,KAAP,GAA+BD,KAA/B,CAAOC,KAAP;EAAA,IAAcC,MAAd,GAA+BF,KAA/B,CAAcE,MAAd;EAAA,IAAsBC,KAAtB,GAA+BH,KAA/B,CAAsBG,KAAtB;;EAEA,gBAAiC,0BAAS,CAAC,cAAD,EAAiB;IAACH;EAAD,CAAjB,CAAT,EAAoC,MACnEL,MAAM,CAACS,KAAP,CAAaH,KAAb,EAAoBC,MAApB,CAD+B,CAAjC;EAAA,IAAOG,SAAP,aAAOA,SAAP;EAAA,IAAkBC,KAAlB,aAAkBA,KAAlB;EAAA,IAAyBC,IAAzB,aAAyBA,IAAzB;;EAIA,qBAA4D,8BAA5D;EAAA,IAAOC,gBAAP,kBAAOA,gBAAP;EAAA,IAAyBC,UAAzB,kBAAyBA,UAAzB;EAAA,IAAqCC,mBAArC,kBAAqCA,mBAArC;;EACA,IAAMC,WAAW,GAAG,sBAAAH,gBAAgB,CAACC,UAAU,GAAG,CAAd,CAAhB,wEAAmC,CAAnC,EAAsCP,MAAtC,KAAgD,EAApE;EACA,IAAOU,aAAP,GAAwBD,WAAxB,CAAOC,aAAP;EAEA,IAAMC,WAAW,GAAG,wBAAY,CAACC,EAAD,EAAKC,IAAL,KAAc;IAC5CL,mBAAmB,CAAC;MAClBI,EADkB;MAElBC,IAFkB;MAGlB;MACAH,aAAa,EAAEA,aAAa,GAAG,uBAAeA,aAAf,CAAH,GAAmC,IAJ7C;MAKlB;MACAI,QAAQ,EAAED;IANQ,CAAD,CAAnB;EAQD,CATmB,EASjB,CAACP,gBAAD,CATiB,CAApB;;EAWA,IAAIH,SAAJ,EAAe;IACb,oBACE,6BAAC,OAAD;MAAK,OAAO,EAAE;IAAd,gBACE,6BAAC,QAAD;MAAM,OAAO,EAAC,QAAd;MAAuB,KAAK,EAAC;IAA7B,gBACE,6BAAC,WAAD;MAAS,KAAK;IAAd,EADF,CADF,CADF;EAOD;;EAED,IAAIC,KAAJ,EAAW;IACT,oBACE,6BAAC,SAAD;MAAO,OAAO,EAAE,CAAhB;MAAmB,KAAK,EAAE;IAA1B,gBACE,6BAAC,iBAAD,mDADF,EAEGH,KAAK,iBAAI,6BAAC,cAAD;MAAO,KAAK,EAAEF,KAAd;MAAqB,MAAM,EAAEC;IAA7B,EAFZ,CADF;EAMD;;EAED,IAAI,EAACK,IAAD,aAACA,IAAD,eAACA,IAAI,CAAEU,MAAP,CAAJ,EAAmB;IACjB,oBACE,6BAAC,SAAD;MAAO,OAAO,EAAE,CAAhB;MAAmB,KAAK,EAAE;IAA1B,gBACE,6BAAC,iBAAD,6BADF,EAEGd,KAAK,iBAAI,6BAAC,cAAD;MAAO,KAAK,EAAEF,KAAd;MAAqB,MAAM,EAAEC;IAA7B,EAFZ,CADF;EAMD;;EAED,oBACE,6BAAC,SAAD;IAAO,OAAO,EAAE,CAAhB;IAAmB,KAAK,EAAE;EAA1B,GACGK,IAAI,CAACW,GAAL,CAAUC,GAAD,iBACR,6BAAC,UAAD;IAAQ,OAAO,EAAE,MAAMN,WAAW,CAACM,GAAG,CAACC,GAAL,EAAUD,GAAG,CAACE,KAAd,CAAlC;IAAwD,OAAO,EAAE,CAAjE;IAAoE,IAAI,EAAC;EAAzE,gBACE,6BAAC,gBAAD;IAAS,KAAK,EAAEF,GAAhB;IAAqB,IAAI,EAAEG,gBAAOC,GAAP,CAAWJ,GAAG,CAACE,KAAf;EAA3B,EADF,CADD,CADH,CADF;AASD"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = DocumentsPane;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _dlv = _interopRequireDefault(require("dlv"));
11
+
12
+ var _reactQuery = require("react-query");
13
+
14
+ var _ui = require("@sanity/ui");
15
+
16
+ var _Documents = _interopRequireDefault(require("./Documents"));
17
+
18
+ var _Feedback = _interopRequireDefault(require("./Feedback"));
19
+
20
+ var _Debug = _interopRequireDefault(require("./Debug"));
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
+
26
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
27
+
28
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
29
+
30
+ var queryClient = new _reactQuery.QueryClient();
31
+
32
+ function DocumentsPane(_ref) {
33
+ var sanityDocument = _ref.document,
34
+ options = _ref.options;
35
+ var query = options.query,
36
+ params = options.params,
37
+ useDraft = options.useDraft,
38
+ debug = options.debug;
39
+ var doc = useDraft ? sanityDocument.displayed : sanityDocument.published;
40
+
41
+ var _ref2 = doc !== null && doc !== void 0 ? doc : {},
42
+ _rev = _ref2._rev;
43
+
44
+ var paramValues = Object.keys(params).reduce((acc, key) => _objectSpread(_objectSpread({}, acc), {}, {
45
+ [key]: (0, _dlv.default)(doc, params[key])
46
+ }), {});
47
+
48
+ if (!_rev) {
49
+ return /*#__PURE__*/_react.default.createElement(_ui.Stack, {
50
+ padding: 4,
51
+ space: 5
52
+ }, /*#__PURE__*/_react.default.createElement(_Feedback.default, null, "Document must be Published to have References"), debug && /*#__PURE__*/_react.default.createElement(_Debug.default, {
53
+ query: query,
54
+ params: params
55
+ }));
56
+ }
57
+
58
+ return /*#__PURE__*/_react.default.createElement(_reactQuery.QueryClientProvider, {
59
+ client: queryClient
60
+ }, /*#__PURE__*/_react.default.createElement(_Documents.default, {
61
+ query: query,
62
+ params: paramValues,
63
+ debug: debug
64
+ }));
65
+ }
66
+ //# sourceMappingURL=DocumentsPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentsPane.js","names":["queryClient","QueryClient","DocumentsPane","sanityDocument","document","options","query","params","useDraft","debug","doc","displayed","published","_rev","paramValues","Object","keys","reduce","acc","key"],"sources":["../src/DocumentsPane.tsx"],"sourcesContent":["import React from 'react'\nimport delve from 'dlv'\nimport {QueryClient, QueryClientProvider} from 'react-query'\nimport {Stack} from '@sanity/ui'\n\nimport Documents from './Documents'\nimport Feedback from './Feedback'\nimport Debug from './Debug'\n\nconst queryClient = new QueryClient()\n\nexport default function DocumentsPane({document: sanityDocument, options}) {\n const {query, params, useDraft, debug} = options\n\n const doc = useDraft ? sanityDocument.displayed : sanityDocument.published\n const {_rev} = doc ?? {}\n\n const paramValues = Object.keys(params).reduce(\n (acc, key) => ({...acc, [key]: delve(doc, params[key])}),\n {}\n )\n\n if (!_rev) {\n return (\n <Stack padding={4} space={5}>\n <Feedback>Document must be Published to have References</Feedback>\n {debug && <Debug query={query} params={params} />}\n </Stack>\n )\n }\n\n return (\n <QueryClientProvider client={queryClient}>\n <Documents query={query} params={paramValues} debug={debug} />\n </QueryClientProvider>\n )\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;;AAEA,IAAMA,WAAW,GAAG,IAAIC,uBAAJ,EAApB;;AAEe,SAASC,aAAT,OAA4D;EAAA,IAA1BC,cAA0B,QAApCC,QAAoC;EAAA,IAAVC,OAAU,QAAVA,OAAU;EACzE,IAAOC,KAAP,GAAyCD,OAAzC,CAAOC,KAAP;EAAA,IAAcC,MAAd,GAAyCF,OAAzC,CAAcE,MAAd;EAAA,IAAsBC,QAAtB,GAAyCH,OAAzC,CAAsBG,QAAtB;EAAA,IAAgCC,KAAhC,GAAyCJ,OAAzC,CAAgCI,KAAhC;EAEA,IAAMC,GAAG,GAAGF,QAAQ,GAAGL,cAAc,CAACQ,SAAlB,GAA8BR,cAAc,CAACS,SAAjE;;EACA,YAAeF,GAAf,aAAeA,GAAf,cAAeA,GAAf,GAAsB,EAAtB;EAAA,IAAOG,IAAP,SAAOA,IAAP;;EAEA,IAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYT,MAAZ,EAAoBU,MAApB,CAClB,CAACC,GAAD,EAAMC,GAAN,qCAAmBD,GAAnB;IAAwB,CAACC,GAAD,GAAO,kBAAMT,GAAN,EAAWH,MAAM,CAACY,GAAD,CAAjB;EAA/B,EADkB,EAElB,EAFkB,CAApB;;EAKA,IAAI,CAACN,IAAL,EAAW;IACT,oBACE,6BAAC,SAAD;MAAO,OAAO,EAAE,CAAhB;MAAmB,KAAK,EAAE;IAA1B,gBACE,6BAAC,iBAAD,wDADF,EAEGJ,KAAK,iBAAI,6BAAC,cAAD;MAAO,KAAK,EAAEH,KAAd;MAAqB,MAAM,EAAEC;IAA7B,EAFZ,CADF;EAMD;;EAED,oBACE,6BAAC,+BAAD;IAAqB,MAAM,EAAEP;EAA7B,gBACE,6BAAC,kBAAD;IAAW,KAAK,EAAEM,KAAlB;IAAyB,MAAM,EAAEQ,WAAjC;IAA8C,KAAK,EAAEL;EAArD,EADF,CADF;AAKD"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Feedback;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _ui = require("@sanity/ui");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
+
14
+ function Feedback(props) {
15
+ var children = props.children,
16
+ _props$tone = props.tone,
17
+ tone = _props$tone === void 0 ? "caution" : _props$tone;
18
+ return /*#__PURE__*/_react.default.createElement(_ui.Card, {
19
+ padding: 3,
20
+ radius: 2,
21
+ shadow: 1,
22
+ tone: tone
23
+ }, /*#__PURE__*/_react.default.createElement(_ui.Text, {
24
+ size: 1
25
+ }, children));
26
+ }
27
+ //# sourceMappingURL=Feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Feedback.js","names":["Feedback","props","children","tone"],"sources":["../src/Feedback.tsx"],"sourcesContent":["import React from 'react'\nimport {Card, Text} from '@sanity/ui'\nimport type {BadgeTone} from '@sanity/ui'\n\ntype FeedbackProps = {\n children?: React.ReactNode\n tone?: BadgeTone\n}\n\nexport default function Feedback(props: FeedbackProps) {\n const {children, tone = `caution`} = props\n\n return (\n <Card padding={3} radius={2} shadow={1} tone={tone}>\n <Text size={1}>{children}</Text>\n </Card>\n )\n}\n"],"mappings":";;;;;;;AAAA;;AACA;;;;AAQe,SAASA,QAAT,CAAkBC,KAAlB,EAAwC;EACrD,IAAOC,QAAP,GAAqCD,KAArC,CAAOC,QAAP;EAAA,kBAAqCD,KAArC,CAAiBE,IAAjB;EAAA,IAAiBA,IAAjB;EAEA,oBACE,6BAAC,QAAD;IAAM,OAAO,EAAE,CAAf;IAAkB,MAAM,EAAE,CAA1B;IAA6B,MAAM,EAAE,CAArC;IAAwC,IAAI,EAAEA;EAA9C,gBACE,6BAAC,QAAD;IAAM,IAAI,EAAE;EAAZ,GAAgBD,QAAhB,CADF,CADF;AAKD"}
package/lib/index.js CHANGED
@@ -3,71 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = DocumentsPane;
6
+ exports.default = void 0;
7
7
 
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _propTypes = _interopRequireDefault(require("prop-types"));
11
-
12
- var _dlv = _interopRequireDefault(require("dlv"));
13
-
14
- var _ui = require("@sanity/ui");
15
-
16
- var _reactQuery = require("react-query");
17
-
18
- var _Documents = _interopRequireDefault(require("./Documents"));
8
+ var _DocumentsPane = _interopRequireDefault(require("./DocumentsPane"));
19
9
 
20
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
11
 
22
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
23
-
24
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
25
-
26
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
-
28
- var queryClient = new _reactQuery.QueryClient();
29
-
30
- function DocumentsPane(_ref) {
31
- var sanityDocument = _ref.document,
32
- options = _ref.options;
33
- var query = options.query,
34
- params = options.params,
35
- useDraft = options.useDraft,
36
- debug = options.debug;
37
- var doc = useDraft ? sanityDocument.displayed : sanityDocument.published;
38
-
39
- var _ref2 = doc !== null && doc !== void 0 ? doc : {},
40
- _rev = _ref2._rev;
41
-
42
- var paramValues = Object.keys(params).reduce((acc, key) => _objectSpread(_objectSpread({}, acc), {}, {
43
- [key]: (0, _dlv.default)(doc, params[key])
44
- }), {});
45
- return /*#__PURE__*/_react.default.createElement(_ui.ThemeProvider, {
46
- theme: _ui.studioTheme
47
- }, /*#__PURE__*/_react.default.createElement(_reactQuery.QueryClientProvider, {
48
- client: queryClient
49
- }, /*#__PURE__*/_react.default.createElement(_Documents.default, {
50
- _rev: _rev,
51
- query: query,
52
- params: paramValues,
53
- debug: debug
54
- })));
55
- }
56
-
57
- DocumentsPane.propTypes = {
58
- options: _propTypes.default.shape({
59
- params: _propTypes.default.object,
60
- query: _propTypes.default.string,
61
- useDraft: _propTypes.default.bool,
62
- debug: _propTypes.default.bool
63
- })
64
- };
65
- DocumentsPane.defaultProps = {
66
- options: {
67
- params: {},
68
- query: "",
69
- useDraft: false,
70
- debug: false
71
- }
72
- };
12
+ var _default = _DocumentsPane.default;
13
+ exports.default = _default;
73
14
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["queryClient","QueryClient","DocumentsPane","sanityDocument","document","options","query","params","useDraft","debug","doc","displayed","published","_rev","paramValues","Object","keys","reduce","acc","key","studioTheme","propTypes","PropTypes","shape","object","string","bool","defaultProps"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AAEA;;;;;;;;;;AAEA,IAAMA,WAAW,GAAG,IAAIC,uBAAJ,EAApB;;AAEe,SAASC,aAAT,OAA4D;AAAA,MAA1BC,cAA0B,QAApCC,QAAoC;AAAA,MAAVC,OAAU,QAAVA,OAAU;AACzE,MAAOC,KAAP,GAAyCD,OAAzC,CAAOC,KAAP;AAAA,MAAcC,MAAd,GAAyCF,OAAzC,CAAcE,MAAd;AAAA,MAAsBC,QAAtB,GAAyCH,OAAzC,CAAsBG,QAAtB;AAAA,MAAgCC,KAAhC,GAAyCJ,OAAzC,CAAgCI,KAAhC;AACA,MAAMC,GAAG,GAAGF,QAAQ,GAAGL,cAAc,CAACQ,SAAlB,GAA8BR,cAAc,CAACS,SAAjE;;AACA,cAAeF,GAAf,aAAeA,GAAf,cAAeA,GAAf,GAAsB,EAAtB;AAAA,MAAOG,IAAP,SAAOA,IAAP;;AAEA,MAAMC,WAAW,GAAGC,MAAM,CAACC,IAAP,CAAYT,MAAZ,EAAoBU,MAApB,CAClB,CAACC,GAAD,EAAMC,GAAN,qCAAmBD,GAAnB;AAAwB,KAACC,GAAD,GAAO,kBAAMT,GAAN,EAAWH,MAAM,CAACY,GAAD,CAAjB;AAA/B,IADkB,EAElB,EAFkB,CAApB;AAKA,sBACE,6BAAC,iBAAD;AAAe,IAAA,KAAK,EAAEC;AAAtB,kBACE,6BAAC,+BAAD;AAAqB,IAAA,MAAM,EAAEpB;AAA7B,kBACE,6BAAC,kBAAD;AAAW,IAAA,IAAI,EAAEa,IAAjB;AAAuB,IAAA,KAAK,EAAEP,KAA9B;AAAqC,IAAA,MAAM,EAAEQ,WAA7C;AAA0D,IAAA,KAAK,EAAEL;AAAjE,IADF,CADF,CADF;AAOD;;AAEDP,aAAa,CAACmB,SAAd,GAA0B;AACxBhB,EAAAA,OAAO,EAAEiB,mBAAUC,KAAV,CAAgB;AACvBhB,IAAAA,MAAM,EAAEe,mBAAUE,MADK;AAEvBlB,IAAAA,KAAK,EAAEgB,mBAAUG,MAFM;AAGvBjB,IAAAA,QAAQ,EAAEc,mBAAUI,IAHG;AAIvBjB,IAAAA,KAAK,EAAEa,mBAAUI;AAJM,GAAhB;AADe,CAA1B;AASAxB,aAAa,CAACyB,YAAd,GAA6B;AAC3BtB,EAAAA,OAAO,EAAE;AACPE,IAAAA,MAAM,EAAE,EADD;AAEPD,IAAAA,KAAK,IAFE;AAGPE,IAAAA,QAAQ,EAAE,KAHH;AAIPC,IAAAA,KAAK,EAAE;AAJA;AADkB,CAA7B","sourcesContent":["import React from 'react'\nimport PropTypes from 'prop-types'\nimport delve from 'dlv'\nimport {studioTheme, ThemeProvider} from '@sanity/ui'\nimport {QueryClient, QueryClientProvider} from 'react-query'\n\nimport Documents from './Documents'\n\nconst queryClient = new QueryClient()\n\nexport default function DocumentsPane({document: sanityDocument, options}) {\n const {query, params, useDraft, debug} = options\n const doc = useDraft ? sanityDocument.displayed : sanityDocument.published\n const {_rev} = doc ?? {}\n\n const paramValues = Object.keys(params).reduce(\n (acc, key) => ({...acc, [key]: delve(doc, params[key])}),\n {}\n )\n\n return (\n <ThemeProvider theme={studioTheme}>\n <QueryClientProvider client={queryClient}>\n <Documents _rev={_rev} query={query} params={paramValues} debug={debug} />\n </QueryClientProvider>\n </ThemeProvider>\n )\n}\n\nDocumentsPane.propTypes = {\n options: PropTypes.shape({\n params: PropTypes.object,\n query: PropTypes.string,\n useDraft: PropTypes.bool,\n debug: PropTypes.bool,\n }),\n}\n\nDocumentsPane.defaultProps = {\n options: {\n params: {},\n query: ``,\n useDraft: false,\n debug: false,\n },\n}\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["DocumentsPane"],"sources":["../src/index.js"],"sourcesContent":["\nimport DocumentsPane from \"./DocumentsPane\";\n\nexport default DocumentsPane\n"],"mappings":";;;;;;;AACA;;;;eAEeA,sB"}
package/package.json CHANGED
@@ -1,12 +1,21 @@
1
1
  {
2
2
  "name": "sanity-plugin-documents-pane",
3
- "version": "1.0.5",
3
+ "version": "1.0.8",
4
4
  "description": "Displays the results of a GROQ query in a View Pane",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
7
7
  "build": "sanipack build",
8
8
  "watch": "sanipack build --watch",
9
- "prepublishOnly": "sanipack build && sanipack verify"
9
+ "_postinstall": "husky install",
10
+ "prepublishOnly": "pinst --disable && sanipack build && sanipack verify",
11
+ "postpublish": "pinst --enable",
12
+ "lint": "eslint .",
13
+ "lint:fix": "eslint . --fix"
14
+ },
15
+ "husky": {
16
+ "hooks": {
17
+ "pre-commit": "npm run lint:fix"
18
+ }
10
19
  },
11
20
  "repository": {
12
21
  "type": "git",
@@ -19,19 +28,23 @@
19
28
  "author": "Sanity.io <hello@sanity.io>",
20
29
  "license": "MIT",
21
30
  "dependencies": {
31
+ "@sanity/base": "^2.29.5",
32
+ "@sanity/desk-tool": "^2.29.5",
33
+ "@sanity/state-router": "^2.29.3",
22
34
  "@sanity/ui": "^0.34.6",
35
+ "@sanity/util": "^2.29.5",
23
36
  "dlv": "^1.1.3",
24
- "prop-types": "15.7.2",
25
- "react-query": "^3.19.1",
26
- "styled-components": "^5.3.0"
37
+ "husky": "^7.0.1",
38
+ "react-query": "^3.19.1"
27
39
  },
28
40
  "devDependencies": {
29
41
  "eslint": "7.31.0",
30
- "eslint-config-prettier": "8.3.0",
42
+ "eslint-config-prettier": "^8.3.0",
31
43
  "eslint-config-sanity": "5.1.0",
32
- "eslint-plugin-react": "7.24.0",
33
- "prettier": "2.3.2",
34
- "sanipack": "2.0.1"
44
+ "eslint-plugin-react": "^7.24.0",
45
+ "pinst": "^2.1.6",
46
+ "prettier": "^2.3.2",
47
+ "sanipack": "^2.1.0"
35
48
  },
36
49
  "peerDependencies": {
37
50
  "react": "^17.0.0"
@@ -51,8 +64,7 @@
51
64
  "extends": [
52
65
  "sanity",
53
66
  "sanity/react",
54
- "prettier",
55
- "prettier/react"
67
+ "prettier"
56
68
  ]
57
69
  }
58
70
  }
@@ -1,5 +1,4 @@
1
1
  import React from 'react'
2
- import PropTypes from 'prop-types'
3
2
  import {Code, Box, Label, Stack} from '@sanity/ui'
4
3
 
5
4
  export default function Debug({query, params}) {
@@ -20,13 +19,3 @@ export default function Debug({query, params}) {
20
19
  </>
21
20
  )
22
21
  }
23
-
24
- Debug.propTypes = {
25
- params: PropTypes.object,
26
- query: PropTypes.string,
27
- }
28
-
29
- Debug.defaultProps = {
30
- params: {},
31
- query: ``,
32
- }
@@ -0,0 +1,75 @@
1
+ import React, {useCallback} from 'react'
2
+ import {useQuery} from 'react-query'
3
+ import {Box, Button, Stack, Flex, Spinner} from '@sanity/ui'
4
+ import {usePaneRouter} from '@sanity/desk-tool'
5
+ import {fromString as pathFromString} from '@sanity/util/paths'
6
+ // import {RouterContext} from '@sanity/state-router/lib/RouterContext'
7
+ import Preview from 'part:@sanity/base/preview'
8
+ import schema from 'part:@sanity/base/schema'
9
+ import sanityClient from 'part:@sanity/base/client'
10
+
11
+ import Debug from './Debug'
12
+ import Feedback from './Feedback'
13
+
14
+ const client = sanityClient.withConfig({apiVersion: `2021-05-19`})
15
+
16
+ export default function Documents(props) {
17
+ const {query, params, debug} = props
18
+
19
+ const {isLoading, error, data} = useQuery(['useDocuments', {props}], () =>
20
+ client.fetch(query, params)
21
+ )
22
+
23
+ const {routerPanesState, groupIndex, handleEditReference} = usePaneRouter()
24
+ const childParams = routerPanesState[groupIndex + 1]?.[0].params || {}
25
+ const {parentRefPath} = childParams
26
+
27
+ const handleClick = useCallback((id, type) => {
28
+ handleEditReference({
29
+ id,
30
+ type,
31
+ // Uncertain that this works as intended
32
+ parentRefPath: parentRefPath ? pathFromString(parentRefPath) : [``],
33
+ // Added this to satisfy TS
34
+ template: type,
35
+ })
36
+ }, [routerPanesState])
37
+
38
+ if (isLoading) {
39
+ return (
40
+ <Box padding={4}>
41
+ <Flex justify="center" align="center">
42
+ <Spinner muted />
43
+ </Flex>
44
+ </Box>
45
+ )
46
+ }
47
+
48
+ if (error) {
49
+ return (
50
+ <Stack padding={4} space={5}>
51
+ <Feedback>There was en error performing this query</Feedback>
52
+ {debug && <Debug query={query} params={params} />}
53
+ </Stack>
54
+ )
55
+ }
56
+
57
+ if (!data?.length) {
58
+ return (
59
+ <Stack padding={4} space={5}>
60
+ <Feedback>No Documents found</Feedback>
61
+ {debug && <Debug query={query} params={params} />}
62
+ </Stack>
63
+ )
64
+ }
65
+
66
+ return (
67
+ <Stack padding={2} space={1}>
68
+ {data.map((doc) => (
69
+ <Button onClick={() => handleClick(doc._id, doc._type)} padding={2} mode="bleed">
70
+ <Preview value={doc} type={schema.get(doc._type)} />
71
+ </Button>
72
+ ))}
73
+ </Stack>
74
+ )
75
+ }
@@ -0,0 +1,37 @@
1
+ import React from 'react'
2
+ import delve from 'dlv'
3
+ import {QueryClient, QueryClientProvider} from 'react-query'
4
+ import {Stack} from '@sanity/ui'
5
+
6
+ import Documents from './Documents'
7
+ import Feedback from './Feedback'
8
+ import Debug from './Debug'
9
+
10
+ const queryClient = new QueryClient()
11
+
12
+ export default function DocumentsPane({document: sanityDocument, options}) {
13
+ const {query, params, useDraft, debug} = options
14
+
15
+ const doc = useDraft ? sanityDocument.displayed : sanityDocument.published
16
+ const {_rev} = doc ?? {}
17
+
18
+ const paramValues = Object.keys(params).reduce(
19
+ (acc, key) => ({...acc, [key]: delve(doc, params[key])}),
20
+ {}
21
+ )
22
+
23
+ if (!_rev) {
24
+ return (
25
+ <Stack padding={4} space={5}>
26
+ <Feedback>Document must be Published to have References</Feedback>
27
+ {debug && <Debug query={query} params={params} />}
28
+ </Stack>
29
+ )
30
+ }
31
+
32
+ return (
33
+ <QueryClientProvider client={queryClient}>
34
+ <Documents query={query} params={paramValues} debug={debug} />
35
+ </QueryClientProvider>
36
+ )
37
+ }
@@ -0,0 +1,18 @@
1
+ import React from 'react'
2
+ import {Card, Text} from '@sanity/ui'
3
+ import type {BadgeTone} from '@sanity/ui'
4
+
5
+ type FeedbackProps = {
6
+ children?: React.ReactNode
7
+ tone?: BadgeTone
8
+ }
9
+
10
+ export default function Feedback(props: FeedbackProps) {
11
+ const {children, tone = `caution`} = props
12
+
13
+ return (
14
+ <Card padding={3} radius={2} shadow={1} tone={tone}>
15
+ <Text size={1}>{children}</Text>
16
+ </Card>
17
+ )
18
+ }
package/src/index.js CHANGED
@@ -1,46 +1,4 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import delve from 'dlv'
4
- import {studioTheme, ThemeProvider} from '@sanity/ui'
5
- import {QueryClient, QueryClientProvider} from 'react-query'
6
1
 
7
- import Documents from './Documents'
2
+ import DocumentsPane from "./DocumentsPane";
8
3
 
9
- const queryClient = new QueryClient()
10
-
11
- export default function DocumentsPane({document: sanityDocument, options}) {
12
- const {query, params, useDraft, debug} = options
13
- const doc = useDraft ? sanityDocument.displayed : sanityDocument.published
14
- const {_rev} = doc ?? {}
15
-
16
- const paramValues = Object.keys(params).reduce(
17
- (acc, key) => ({...acc, [key]: delve(doc, params[key])}),
18
- {}
19
- )
20
-
21
- return (
22
- <ThemeProvider theme={studioTheme}>
23
- <QueryClientProvider client={queryClient}>
24
- <Documents _rev={_rev} query={query} params={paramValues} debug={debug} />
25
- </QueryClientProvider>
26
- </ThemeProvider>
27
- )
28
- }
29
-
30
- DocumentsPane.propTypes = {
31
- options: PropTypes.shape({
32
- params: PropTypes.object,
33
- query: PropTypes.string,
34
- useDraft: PropTypes.bool,
35
- debug: PropTypes.bool,
36
- }),
37
- }
38
-
39
- DocumentsPane.defaultProps = {
40
- options: {
41
- params: {},
42
- query: ``,
43
- useDraft: false,
44
- debug: false,
45
- },
46
- }
4
+ export default DocumentsPane
@@ -1,14 +0,0 @@
1
- @import 'part:@sanity/base/theme/variables-style';
2
-
3
- .root {
4
- /* */
5
- }
6
-
7
- .item {
8
- composes: item from 'part:@sanity/base/theme/layout/selectable-style';
9
- display: block;
10
- text-decoration: inherit;
11
- outline: none;
12
- margin: 0;
13
- padding: var(--small-padding) var(--medium-padding);
14
- }
package/src/Documents.js DELETED
@@ -1,84 +0,0 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import {IntentLink} from 'part:@sanity/base/router'
4
- import schema from 'part:@sanity/base/schema'
5
- import {useQuery} from 'react-query'
6
- import sanityClient from 'part:@sanity/base/client'
7
- import {Text, Box, Stack, Flex, Spinner} from '@sanity/ui'
8
- import Preview from 'part:@sanity/base/preview'
9
-
10
- import Debug from './Debug'
11
- import styles from './Documents.module.css'
12
-
13
- const client = sanityClient.withConfig({apiVersion: `2021-05-19`})
14
-
15
- export default function Documents(props) {
16
- const {query, params, debug, _rev} = props
17
-
18
- const {isLoading, error, data} = useQuery(['useDocuments', { props }], () =>
19
- client.fetch(query, params)
20
- )
21
-
22
- if (!_rev) {
23
- return (<Stack padding={4} space={5}>
24
- <Box>
25
- <Text>Document must be Published</Text>
26
- </Box>
27
- {debug && <Debug query={query} params={params} />}
28
- </Stack>)
29
- }
30
-
31
- if (isLoading) {
32
- return (
33
- <Box padding={4}>
34
- <Flex justify="center" align="center">
35
- <Spinner muted />
36
- </Flex>
37
- </Box>
38
- )
39
- }
40
-
41
- if (error) {
42
- return (
43
- <Stack padding={4} space={5}>
44
- <Box>
45
- <Text>There was en error performing this query</Text>
46
- </Box>
47
- {debug && <Debug query={query} params={params} />}
48
- </Stack>
49
- )
50
- }
51
-
52
- if (!data?.length) {
53
- return (
54
- <Stack padding={4} space={5}>
55
- <Box>
56
- <Text>No Documents found</Text>
57
- </Box>
58
- {debug && <Debug query={query} params={params} />}
59
- </Stack>
60
- )
61
- }
62
-
63
- return (
64
- <Stack className={styles.root}>
65
- {data.map((doc) => (
66
- <IntentLink key={doc._id} intent="edit" params={{id: doc._id, type: doc._type}} className={styles.item}>
67
- <Preview value={doc} type={schema.get(doc._type)} />
68
- </IntentLink>
69
- ))}
70
- </Stack>
71
- )
72
- }
73
-
74
- Documents.propTypes = {
75
- _rev: PropTypes.string,
76
- params: PropTypes.object,
77
- query: PropTypes.string,
78
- }
79
-
80
- Documents.defaultProps = {
81
- _rev: ``,
82
- params: {},
83
- query: ``,
84
- }
@@ -1,14 +0,0 @@
1
- @import 'part:@sanity/base/theme/variables-style';
2
-
3
- .root {
4
- /* */
5
- }
6
-
7
- .item {
8
- composes: item from 'part:@sanity/base/theme/layout/selectable-style';
9
- display: block;
10
- text-decoration: inherit;
11
- outline: none;
12
- margin: 0;
13
- padding: var(--small-padding) var(--medium-padding);
14
- }